2014-02-10 121 views
0

我有一個shell腳本,它在啓動時要求輸入憑據。運行shell命令並回答問題

我想用Node.js使用exec()來啓動我的腳本,並在詢問時發送憑證。

目前我的代碼是這樣的:

var sys = require('sys') 
var exec = require('child_process').exec; 
function puts(error, stdout, stderr) { sys.puts(stdout) } 
exec("myscript", puts); 

這可能嗎?

n.b.我無法將憑據作爲腳本的參數傳遞,但不支持它們。

+0

什麼樣的證書?操作系統的憑證或某些服務的憑證?是否因爲您無權以當前用戶的身份運行腳本,並且需要提升?你使用什麼樣的操作系統? – Mihai

+0

是腳本特有的憑據(實際上是「git」)。它應該在Window/OSx/Linux上工作(但不要緊,因爲git有自己的shell)。 –

+0

解決這個問題的一個想法是在您的git賬戶中使用ssh密鑰。這樣你就不需要憑證了。 – Mihai

回答

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.