2016-07-28 111 views
2

我試圖運行一個腳本,該腳本運行putty,並在創建的putty終端內運行命令。我已經能夠使用Python的子進程模塊使用check_call或Popen從我的腳本啓動putty。不過,我很困惑我如何在腳本的子流程Putty終端中運行命令。我需要能夠在膩子中運行此命令並分析Putty終端上的輸出。謝謝你的幫助。如何在Python腳本的子進程中運行命令?

+0

你用膩子做什麼?直接從python腳本執行任務可能更好(例如,通過SSH執行遠程命令,您可以使用paramiko)。 –

+0

我不確定你的要求是什麼,但你可以同時ssh和命令:'ssh [email protected]'ls -l; ps -aux; whoami''與更多的信息[這裏](http://malcontentcomics.com/systemsboy/2006/07/send-remote-commands-via-ssh.html) – mitoRibo

回答

0

您需要將stdin參數設置爲PIPE,並使用Popencommunicate函數將數據發送到stdin。

from subprocess import Popen, PIPE 

p = Popen('/the/command', stdin=PIPE, stdout=PIPE, stderr=PIPE) 
std_out, std_err = p.communicate('command to putty') 

這就是說,它可以更容易地使用實現ssh協議的Python庫(如paramiko)而不是通過油灰去。

+1

我會認爲這是1.一個鏈接唯一的答案。 2.由於OP似乎已經知道如何使用'Popen'啓動外部程序('putty'),所以不是特別有用。問題是不打開'putty',問題是讓'膩子'做OP想要的東西,一旦打開... – mgilson