gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 23:32:51 28 4
gpt4 key购买 nike

我有以下 Node.js 代码可以通过 ssh 连接到服务器,它可以很好地转发标准输出,但是每当我键入任何内容时,它都不会转发到服务器。如何将我的本地标准输入转发到 ssh 连接标准输入?

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生成进程时告诉它子进程的标准输入使用什么:

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

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

关于javascript - Node.js child_process exec,stdin 没有传递给 ssh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32056513/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com