我试图在node.js中运行一个ssh子进程,并通过我的程序来控制它.我的代码:
var util = require('util'); var spawn = require('child_process').spawn; var ssh = spawn('ssh',['cloudstudios.ch']); ssh.stdout.on('data',function (data) { console.log('stdout: ' + data); }); ssh.stderr.on('data',function (data) { console.log('stderr: ' + data); }); ssh.on('exit',function (code) { console.log('child process exited with code ' + code); });
我可以在控制台输入密码,但是我不能做任何事情.我得到以下控制台输出:
stderr: Pseudo-terminal will not be allocated because stdin is not a terminal. root@xxxxxxxxxxxxx.xx's password: stdout: Linux v 2.6.32-5-xen-amd64 #1 SMP Wed Jan 12 05:46:49 UTC 2011 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY,to the extent permitted by applicable law. stderr: stdin: is not a tty
有人有一个想法,我怎么能得到这个工作?
谢谢!
解决方法
尝试一点修改:
var ssh = spawn(‘ssh’,[‘-tt’,’xxx’]);
和:
process.stdin.resume(); process.stdin.on('data',function (chunk) { ssh.stdin.write(chunk); });