我有一个shell脚本,在启动时会要求提供凭据。
我想使用exec()
使用Node.js启动我的脚本,并在询问时发送凭据。
目前我的代码是:
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
exec("myscript", puts);
有可能吗?
n.b。我无法将凭据作为脚本的参数传递,它不支持它们。
答案 0 :(得分:1)
您应该写入流程的标准输入。这是exec
:
var exec = require('child_process').spawn;
var child = spawn('script');
child.stdin.setEncoding('utf8');
child.stdout.on('data', function (data) {
if (data.toString() === 'enter the password:'){
child.stdin.write('pass');
return child.stdin.end();
}
console.log('got some other data:');
console.log(data.toString())
});