Ubuntu 9上的Node.js + SCP + stdin.write

时间:2013-01-22 11:29:16

标签: javascript node.js ssh scp

我很高兴使用Ubuntu 9(无选择),我在其上安装了Node.js.

我想使用SCP(通过ssh复制文件)。所以我做了一点节点魔术:

scpHandler = require('child_process').spawn('scp',['root@192.168.2.16:/user/MyDocs/smsOut.txt', 'smsOut2.txt']);

然后似乎有问题 - ssh需要密码,我不能通过authorization_keys省略该问题,因为它们不会在这个特定设备(Maemo)上工作。

所以我想 - 好吧,我将只使用流写作,它将解决所有问题:

scpHandler.stdout.on('data', function(data){
  console.log(data);
  scpHandler.stdin.write('password');
  scpHandler.stdin.write('String.fromCharCode(13)');
});

在scp显示任何消息后它应该反映写入密码(并且它会立即询问密码)但是,正如你现在可以猜到的那样,出现问题并且没有发生任何事情。当sc获得正确的密码时,应该在成功/不成功转移后显示一些数据,但它仍然等待密码...请帮助,任何想法有什么问题?

1 个答案:

答案 0 :(得分:2)

问题解决了:在这种情况下,使用setTimeout进行等待,使用pty.js进行欺骗终端似乎没问题。