node下边,用子进程exec执行scp命令。没有stduot输出,求大神们解答
如题。
代码如下:
var command = 'scp -r '+Dir+' test230:wwwroot/cdn.sssss.com/webFront/';
console.log(command);
child = child_process.exec(command,
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
if(stderr){
console.log('stderr: ' + stderr);
}
if (error !== null) {
console.log('exec error: ' + error);
}
}
);
child.on('close',function (e) {
console.log('over!');
})
8 回复
有人遇到过么??
什么版本的 node? 另外手动执行的输出是什么?
@yjhjstz 版本是5.10
手动执行的话,输出传输的每一个文件呀
@yjhjstz 我也是呀,
这个样子
研究了一下:scp 输出时会检查是否运行在terminal 上,http://blog.clay.shep.me/2009/06/showing-scp-progress-using-zenity.html 给出了详细的解释。
但由于 exec的实现用的是 fork ,而不是 forkpty
, 故没有输出。
用spawn, 加上 option, {stdio: ‘inherit’} 可以解决问题。@weivea
直接用scp2这个包
@yjhjstz thank you
@dayuoba 谢谢