2014-10-06 73 views
0

我試圖在使用Java的密鑰庫上自動創建。我正在運行child_process產卵函數。首先,通過stderr通道的keytool命令響應很奇怪,但它會提示我輸入密碼。我不確定如何提交任何內容。如果我調用stdin.end(),則會終止進程。在Windows上從節點運行Java keytool命令

var KEYTOOL_COMMAND = "C:\\Program Files\\Java\\jdk1.8.0_05\\bin\\keytool"; 
var ktArgs = ["-genkey", "-v", "-keystore", "test.keystore", "-alias", "test", "-keyalg", "RSA", "-keysize" ,"2048", "-validity", "10000"]; 

var spawn = require("child_process").spawn; 
var cmd = spawn(KEYTOOL_COMMAND, ktArgs); 
cmd.stdout.on('data', function (data) { 
    console.log('stdout: ' + data); 
}); 

cmd.stderr.setEncoding('utf8'); 
cmd.stderr.on('data', function (data) { 
    cmd.stdin.write("password\\n\\r"); 
}); 

cmd.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
}); 

在這裏,我要提交「密碼」作爲我的密碼。

+1

你逃避你的CR和LF,試試這個來代替:'cmd.stdin.write( 「password \ r \ n」);'你也可以嘗試沒有CR:'cmd.stdin.write(「password \ n」);' – mscdex 2014-10-06 18:33:15

+0

你應該給我的朋友寫一個答案。 – 2014-10-06 18:59:19

回答

0

你逃避你的CR和LF,試試這個來代替:cmd.stdin.write("password\r\n");您也可以嘗試不帶CR:cmd.stdin.write("password\n");

+0

\ n本身確實有效。 – 2014-10-06 21:10:43