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

我对使用Ubuntu 9(无select)有一个怀疑的乐趣,我安装了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)上工作。

所以我想 – 好的,我只是使用stream写作,它会解决一切:

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

它应该反映在scp显示任何消息(并要求input密码后)写入密码,但是,正如你现在可以猜到的一样,出现了一些错误,没有什么HAPPENS。 当sc得到正确的密码后,应该有一些数据显示成功/ unsuccesful转移后,但仍然等待密码…请帮助,任何想法是什么错?

问题解决了:在这种情况下,使用setTimeout进行等待,并使用pty.js来欺骗terminal。