2017-08-26 40 views
1

我試圖自動化一個進程。如果我手動運行命令「nexec -i $ HOST現金狀態」,我會看到預期的結果。然而,使用python腳本並運行如下命令時:命令通過子進程運行.Popen需要輸入,但命令手動運行不會

p = subprocess.Popen(command, stdout = subprocess.PIPE, shell=True) 
runningAppString, err = p.communicate() 

腳本掛起,因爲一個出現提示,詢問用戶想要登錄的是什麼類型的登錄。我可以通過打開stdin PIPE和p.communicate(input =「3」)來解決這個問題,但我不明白爲什麼會發生這種情況。另外,上週我第一次開始編寫腳本時,只使用stdout管道,它工作得很好。爲什麼會發生這種情況,處理它的最好方法是什麼?

回答

1

嘗試分割命令到一個數組:

p = subprocess.Popen(["nexec", "-i", "$HOST", "cash", "status"])