javascript – Node.js child_process exec,stdin没有被传递给ssh

我有以下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传递给子进程,有两种方法可以实现:

>子进程具有stdin属性,表示子进程的标准输入.所以你需要做的就是添加process.stdin.pipe(ssh.stdin)
>您可以在生成进程时指定自定义stdio,以告诉它为子进程的stdin使用的内容:

child_proc.exec(command, { env: process.env, stdio: [process.stdin, 'pipe', 'pipe'] })

此外,在半相关的说明中,如果您想避免产生子进程并且具有更多编程控制和/或具有更轻量级的ssh / sftp连接,则存在ssh2模块.

上一篇:Python 内置库 sys用法


下一篇:python 监听键盘输入