gpt4 book ai didi

javascript - NodeJS : Events on child processes

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:14 25 4
gpt4 key购买 nike

var spawn = require("child_process").spawn;
var child = spawn("scp" , ["-P9022", path_to_file, scp_remote_path])
child.stdout.on("data", function(){
//Automatically type in password
})

我正在尝试 scp 到删除服务器并自动输入密码(我知道,我应该使用公钥身份验证,但这不是重点)。当我运行显示的代码时,我得到正确的密码提示;无论如何,我可以通过代码检测到所述提示的存在吗?在这种情况下,“数据”事件似乎没有被触发。

编辑:不确定这是否重要,但 process.stdout.isTTY 是正确的。当然,然后我尝试监听 process.stdin 的可读事件,如下所示

process.stdin.on "readable", ()->
buf = process.stdin.read()
buf2 = process.stdout.read()
console.log "pin", buf, buf2

回调被调用,但 buf 和 buf2 均为 null

最佳答案

Node 0.10 中的流已更改,这可能是事件未触发的原因。理论上,添加“数据”事件监听器应该将可读流切换为向后兼容模式。然而,当您开始收听“数据”时,事情可能已经处于某种状态。 (这是我的理论,我可能完全错误)

使用 Node 0.10 中的新可读流,您不应监听“数据”事件,而应监听“可读”事件,然后从流中读取数据。请参阅此处了解更多信息 readable event

试试这个:

child.stdout.on("readable", function(){
var buf = child.stdout.read();
// check that you got your complete prompt for password...
// write password to stdin...
});

关于javascript - NodeJS : Events on child processes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622927/

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