我需要使用SSH和Node.js脚本克隆GitHub存储库:
var exec = require('child_process').exec;
exec('git clone git@github.com:jquery/jquery.git',
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
}
);
如果github.com不在known_hosts
文件中,则SSH强制进入"是"问题"您确定要继续连接(是/否)?"。
如何自动输入此文本?
P.S。我知道StrictHostKeyChecking=no
,但我需要克隆存储库而不更改SSH配置。
答案 0 :(得分:7)
当然,这完全有可能。当您致电child_process.exec
时,它实际上会返回一个ChildProcess
对象。它包含一个.stdin
对象,它是Writable Stream
的一个实现,可以管道输入/写入。有关ChildProcess.stdin的文档,也位于Writable Stream。
以下是与您的问题相关的一些示例代码:
var exec = require('child_process').exec;
var cmd = exec('git clone git@github.com:jquery/jquery.git', function (error, stdout, stderr) {
// ...
});
cmd.stdin.write("yes");
答案 1 :(得分:-1)
你可以在你的git clone命令之前pass in yes。
exec('yes | git clone git@github.com:jquery/jquery.git'...