2012-01-09 87 views
1

我有這樣的命令,我從php (exec())呼籲:腳本填充命令行密碼

openssl pkcs12 -export -in cert.pem -inkey key.pem -out cred.p12 

,然後我需要插入密碼兩次

Enter Export Password: 
Verifying - Enter Export Password: 

我需要的腳本,將填寫密碼輸入,因爲exec()只會執行該命令,但不能輸入兩次密碼。你有什麼想法我該怎麼做?

+0

openssl提供了在命令中提供密碼的選項,它們使用起來更容易。 – dtech 2012-01-09 17:39:10

+0

openssl -passin參數將執行此操作。例如openssl rsa -in key.pem -passpass pass:secretpassword -text。對於其他方式來傳遞密碼以openssl檢查'man openssl'PASS PHRASE部分 – Finslicer 2012-01-09 17:47:20

+0

在命令行上傳遞密碼可以將其暴露給例如任何人在正確的時刻運行'ps'。 – 2012-01-09 17:56:22

回答

2

一個真正的雙向shell在php中並不容易,但在這種情況下,您可以使用換行符來模擬輸入法。

exec("Command\nPassword\nPassword");

因爲你需要看看proc_open()一個真正的雙向(讀&寫)的可能性。 如果你不需要返回輸出,你可以在w模式下使用更容易的popen(),但是你需要驗證你的命令已經成功運行,因爲你不會得到輸出或錯誤代碼。