我有以下的Node.js代码用于ssh登录到服务器并成功地转发stdout,但是当我输入任何内容时,它不会被转发到服务器。如何将本地的stdin转发到ssh连接的stdin?
var command = 'ssh -tt -i ' + keyPath + ' -o StrictHostKeyChecking=no ubuntu@' + hostIp;
var ssh = child_proc.exec(command, {
env: process.env
});
ssh.stdout.on('data', function (data) {
console.log(data.toString());
});
ssh.stderr.on('data', function (data) {
console.error(data.toString());
});
ssh.on('exit', function (code) {
process.exit(code);
});
process.stdin.pipe(ssh.stdin)
似乎大部分情况下都能正常工作,但它会复制您输入的命令。例如:https://gist.github.com/nodesocket/cb7ffc11b764dc642325 - Justinprocess.stdin.setRawMode(true)
启用原始模式。 - mscdexssh.stdout
和ssh.stderr
处理程序更改为相应的管道方式,即ssh.stdout.pipe(process.stdout)
和ssh.stderr.pipe(process.stderr)
。原因是console.*
方法会在输出末尾添加一个换行符。 - mscdex