跳到主要内容
CNode

node下边,用子进程exec执行scp命令。没有stduot输出,求大神们解答

问答
Wweivea发布于 10 年前最后回复 10 年前
863220

如题。

代码如下:

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)

W
weivea#810 年前
引用 dayuoba直接用scp2这个包

@dayuoba 谢谢

D
dayuoba#610 年前

直接用scp2这个包

Y
yjhjstz#510 年前

研究了一下:scp 输出时会检查是否运行在terminal 上,http://blog.clay.shep.me/2009/06/showing-scp-progress-using-zenity.html 给出了详细的解释。

但由于 exec的实现用的是 fork ,而不是 forkpty, 故没有输出。 用spawn, 加上 option, {stdio: 'inherit'} 可以解决问题。@weivea

W
weivea#410 年前

@yjhjstz 我也是呀, 屏幕快照 2016-05-17 上午10.52.16.png

这个样子

W
weivea#310 年前
引用 yjhjstz什么版本的 node? 另外手动执行的输出是什么?

@yjhjstz 版本是5.10

手动执行的话,输出传输的每一个文件呀

Y
yjhjstz#210 年前

什么版本的 node? 另外手动执行的输出是什么?

W
weivea#110 年前

有人遇到过么??

参与回复

登录后即可参与回复。登录