运行shell命令并回复问题

时间:2014-02-10 13:26:36

标签: node.js shell

我有一个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。我无法将凭据作为脚本的参数传递,它不支持它们。

1 个答案:

答案 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())
});

Similar to this question.