Node.js输入通过spawn运行的bin文件的密码

时间:2016-11-13 16:58:43

标签: node.js stdin child-process

我正在通过.bin运行child_process.spawn()文件,该文件在完成设置之前接收用户的一些输入。通过process.stdin.write("input"\n);正确地获取所有输入似乎正常。但是,当通过stdin发送密码时,同样不起作用。直接运行bin文件并手动输入密码。在通过node.js发送密码之前,我应该设置一些格式吗?我只是继续看到*连续登录stdout,设置似乎没有继续进行。以下是我正在使用的片段

var child_process = require('child_process');
var process = child_process.spawn('./test.bin');

process.stdout.on('data', function(data) {
if(data.toString().trim() === 'Username:')
    process.stdin.write("test\n"); // This works
else if (data.toString().trim() === 'Password:')
    process.stdin.write("password\n"); //This doesn't

同样的任何输入都可能有所帮助。谢谢。

请注意,通过直接运行bin文件输入密码时,输入密码后,不显示任何内容,但输入正确的密码有效。所以,我在想可能存在一些编码问题,或类似我可能遗漏的问题。

1 个答案:

答案 0 :(得分:0)

回答我自己的问题,似乎一次输入密码字符串一个字符,如下所示:

process.stdin.write(password[0]);
process.stdin.write(password[1]);
process.stdin.write(password[2]);
process.stdin.write(password[3]);
process.stdin.write("\n");