2014-03-03 47 views
2

我們在Windows平臺中使用cygwin進行一些維護工作。我想要做的不僅是使用python啓動cygwin,或者啓動它並傳遞一個命令。使用python與Cygwin(mintty)進行通信(執行命令)並獲得輸出

我想啓動cygwin,保持會話,然後我傳遞一個命令給它,並獲得控制檯輸出,然後如果我想,我傳遞第二個命令,並得到輸出...

我想這樣做,是因爲我們公司用了一堆命令與服務器通信,下面類似的東西: 第1步:登錄 第2步:initInfo 步驟3:的getStatus =端口1

我不能傳遞一次命令,因爲我需要根據先前命令的輸出來控制下一個應該傳遞哪個命令。

我可以使用下面的命令來啓動mintty.exe並獲取進程ID,如何將命令傳遞給此特定的mintty應用程序並使用python獲取輸出,並且我需要與mintty進行多次通信每次當我想要執行一個命令時不需要啓動新的mintty。

p_mintty = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT) 

您的任何建議都受到熱烈歡迎!

回答

1

試試這個:

program = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE) 

program.stdin.write("command1") 
stdout1, stderr1 = program.communicate() 

program.stdin.write(change_something(stdout1)) 
stdout2, stderr2 = program.communicate() 
..etc 
+0

謝謝您的回答,但似乎該方案只是掛就行了,「stdout1,stderr1 = program.communicate()」和「命令1」這是我寫的五光十色的窗戶也沒有出現。 – lowitty

+0

你正在輸入的命令是什麼,你期待什麼? – icedtrees

+0

一個簡單的命令「ls -al」,因爲我只是想驗證它,所以我使用了一個簡單的命令。 – lowitty

相關問題