我正在尝试从一个名为node的.js文件中运行一个命令(aws configure)。我一直在使用child_process,它允许我执行一个命令或批处理文件。然而,当该文件通常会提示用户输入用户名和密码时,我无法进行交互。
我尝试使用process.stdin与node一起使用,以便使用node作为用户输入的中间人,但我无法将两者联系起来。
如果有任何想法,那就太好了!
我尝试使用process.stdin与node一起使用,以便使用node作为用户输入的中间人,但我无法将两者联系起来。
如果有任何想法,那就太好了!
var spawn = require('child_process').spawn;
var mystdin = process.stdin;
var conf = spawn('aws configure', {input: mystdin, shell: true});
//When command returns
conf.stdout.on('data', function(data) {
console.log('stdout: ' + data);
//prompt for input
mystdin.resume();
mystdin.setEncoding('utf8');
var util = require('util');
mystdin.on('data', function (text) {
//INSERT ANSWER HERE
console.log('received data:', util.inspect(text));
if (text === 'quit\n') {
done();
}
});
function done() {
console.log('Now that process.stdin is paused, there is nothing more to do.');
process.exit();
}
});
conf.stderr.on('data', function(data) {
console.log('stdout: ' + data);
});
conf.on('close', function(code) {
console.log('child precess exited with code ' + code);
});
这只是我目前正在追求的路径。如果有更好的建议,请告诉我!
谢谢。