Node.js 节点ssh exec通过管道将一些数据传输到远程进程
很抱歉,可能发生了错误,但在输出文件中找不到任何内容,请参见以下内容:Node.js 节点ssh exec通过管道将一些数据传输到远程进程,node.js,ssh,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
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]$
但由于“命令”是“touch output.txt”,我可以看到它在远程“主机”上正确执行:
[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'是空的我认为这是因为您在开始写入之前关闭了流。删除
file.end()
当您pipe
streams时,它将负责在输入流结束时结束写入流。见:
默认情况下,当源流
发出结束,因此目标不再可写。通过{结束:
false}作为保持目标流打开的选项
我想这是因为你在开始写作之前就关闭了这个流。删除
file.end()
当您pipe
streams时,它将负责在输入流结束时结束写入流。见:
默认情况下,当源流
发出结束,因此目标不再可写。通过{结束:
false}作为保持目标流打开的选项
我想这是因为你在开始写作之前就关闭了这个流。删除
file.end()
当您pipe
streams时,它将负责在输入流结束时结束写入流。见:
默认情况下,当源流
发出结束,因此目标不再可写。通过{结束:
false}作为保持目标流打开的选项
我想这是因为你在开始写作之前就关闭了这个流。删除
file.end()
当您pipe
streams时,它将负责在输入流结束时结束写入流。见:
默认情况下,当源流
发出结束,因此目标不再可写。通过{结束:
false}作为保持目标流打开的选项
嗯,成功了。那么我应该什么时候关闭文件呢?Thnx还有一个问题,很抱歉,当我在Linux cron中计划此代码时,它就不工作了。我尝试了绝对路径等没有帮助。如果我对所有这些代码进行注释,即要求通过电子邮件发送一些内容给我,即/*process.stdin.pipe(exec(command,host)).pipe(file);*/email.send(config.emailTo、emailText、emailSubject、emailAttach);您可能正在将文件保存在cron工作目录中。在cron命令中使用
cd
更改目录,然后运行脚本。确保“rep output.txt”位于运行节点的同一目录中。[root@nodedev test]#crontab-l*/1****/usr/bin/node/home/irek/repvpn/dev test/dev-repcert.js>>/home/irek/repvpn/dev test/dev-repcert.log>/dev/null 2>&1[root@nms01m开发测试]#pwd/home/irek/repvpn/dev测试[root@node开发测试]#ls-l rep-output.txt-rw-rw-r--。1 irek irek 0 Jul 4 11:45 rep-output.txtThnx,它起作用了。那么我应该什么时候关闭文件呢?Thnx还有一个问题,很抱歉,当我在Linux cron中计划此代码时,它就不工作了。我尝试了绝对路径等没有帮助。如果我对所有这些代码进行注释,即要求通过电子邮件发送一些内容给我,即/*process.stdin.pipe(exec(command,host)).pipe(file);*/email.send(config.emailTo、emailText、emailSubject、emailAttach);您可能正在将文件保存在cron工作目录中。在cron命令中使用cd
更改目录,然后运行脚本。确保“rep output.txt”位于运行节点的同一目录中。[root@nodedev test]#crontab-l*/1****/usr/bin/node/home/irek/repvpn/dev test/dev-repcert.js>>/home/irek/repvpn/dev test/dev-repcert.log>/dev/null 2>&1[root@nms01m开发测试]#pwd/home/irek/repvpn/dev测试[root@node开发测试]#ls-l rep-output.txt-rw-rw-r--。1 irek irek 0 Jul 4 11:45 rep-output.txtThnx,它起作用了。那么我应该什么时候关闭文件呢?Thnx还有一个问题,很抱歉,当我在Linux cron中计划此代码时,它就不工作了。我尝试了绝对路径等没有帮助。如果我对所有这些代码进行注释,即要求通过电子邮件发送一些内容给我,即/*process.stdin.pipe(exec(command,host)).pipe(file);*/email.send(config.emailTo、emailText、emailSubject、emailAttach);您可能正在将文件保存在cron工作目录中。在cron命令中使用cd
更改目录,然后运行脚本。确保“rep output.txt”位于运行节点的同一目录中。[root@nodedev test]#crontab-l*/1****/usr/bin/node/home/irek/repvpn/dev test/dev-repcert.js>>/home/irek/repvpn/dev test/dev-repcert.log>/dev/null 2>&1[root@nms01m开发测试]#pwd/home/irek/repvpn/dev测试[root@node开发测试]#ls-l rep-output.txt-rw-rw-r--。1 irek irek 0 Jul 4 11:45 rep-output.txtThnx,它起作用了。那么我应该什么时候关闭文件呢?Thnx还有一个问题,很抱歉,当我在Linux cron中计划此代码时,它就不工作了。我尝试了绝对路径等没有帮助。如果我对所有这些代码进行注释,即要求通过电子邮件发送一些内容给我,即/*process.stdin.pipe(exec(command,host)).pipe(file);*/email.send(config.emailTo、emailText、emailSubject、emailAttach);您可能正在将文件保存在cron工作目录中。在cron命令中使用cd
更改目录,然后运行脚本。确保“rep output.txt”位于运行节点的同一目录中。[root@nodedev test]#crontab-l*/1****/usr/bin/node/home/irek/repvpn/dev test/dev-repcert.js>>/home/irek/repvpn/dev test/dev-repcert.log>/dev/null 2>&1[root@nms01m开发测试]#pwd/home/irek/repvpn/dev测试[root@node开发测试]#ls-l rep-output.txt-rw-rw-r--。1 irek irek 0 Jul 4 11:45 rep-output.txt
file = fs.createWriteStream('rep-output.txt');
process.stdin
.pipe(exec(command, host))
.pipe(file);