node ssh-exec将一些数据传递给远程进程

时间:2015-07-04 15:07:27

标签: node.js ssh

抱歉可能做错了但在输出文件中找不到任何内容,请参阅下文:

var exec = require('ssh-exec');
var fs = require('fs');
file = fs.createWriteStream('rep-output.txt');
    process.stdin
     .pipe(exec(command, host))
     .pipe(file);
file.end();

这里是:

[node]$ cat rep-output.txt 
[node]$ 

但因为'command'是'touch output.txt'我可以看到它在远程'host'上正确执行:

[remote]$ ls -l output.txt 
[remote]$-rw-rw-r-- 1 irekr irekr 0 Jul  4 10:53 output.txt

如果'command'即'ls -l'仍然'rep-output.txt'为空

1 个答案:

答案 0 :(得分:3)

我认为这是因为您在写入之前关闭了流。删除file.end()

file = fs.createWriteStream('rep-output.txt');
process.stdin
 .pipe(exec(command, host))
 .pipe(file);

当您pipe流时,它将在输入流结束时负责结束写入流。见doc

  

默认情况下,当源流在目标上调用end()   发出结束,因此目标不再可写。通过{结束:   false}作为保持目标流打开的选项。