2011-09-26 60 views

回答

1

除非我不正確地理解你的問題:你不需要做到這一點。除非您自己明確這麼做,否則不會自動從標準輸入讀取/寫入遠程進程的標準輸入。所以你不需要防止從stdin讀取發生?

編輯:如果遠程進程需要stdin上的數據,並且一直在等待它,可能會出現問題?嘗試在通道上調用shutdown_write()

stdin, stdout, stderr = client.exec_command(cmd) 
stdin.channel.shutdown_write() 
+0

那麼,在這種情況下,它似乎我做到了。我試圖在遠程主機上執行一些powershell命令,並花費數小時的時間試圖使它與Paramiko一起工作。我終於得出結論,爲了這個工作,我需要做「ssh -n user @ host cmd」,而「ssh user @ host cmd」只會永遠掛起。通過使用OpenSSH客戶端的命令行手動執行,確認沒有-n標誌,遠程命令會掛起。 – herira

+0

@herira:我已經更新了我的答案,不知道它會有幫助嗎? – Steven

+0

希望我在幾個小時前問過。謝謝,史蒂文! :) – herira

1

我會溝的paramiko並開始使用fabric。它會讓你在系統上進行遠程調用。它使用paramiko的SSH連接,並提供了很好的乾淨的界面,做更多。

我不知道爲什麼你需要將標準輸入到/ dev/null,但是有一些設置可以使用結構來壓制它。

Goodluck!

+0

謝謝,我會在時間允許的情況下對此進行調查。現在我有一個截止日期,說我使用史蒂文斯解決方案。 :) – herira