2014-01-11 31 views
0

我使用Python的paramiko模塊來遠程執行命令的DD象下面這樣:使用的paramiko執行DD的命令,但什麼也沒得到回報

paramiko.util.log_to_file('paramiko.log') 
s = paramiko.SSHClient() 
s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
s.connect('ip', 22, "account", "password") 

command = r"dd if=/dev/zero of=/test bs=4M count=1024 oflag=direct" 
stdin, stdout, stderr = s.exec_command(command) 
print(stdout.read().strip()) 

但我從沒有stdout.read返回字符串(只有一個空行)( ),那是什麼原因?

PS:我可以直接在CLI上寫命令時得到結果。

回答

1

did you checked stderr?可能該命令沒有正確執行。

+0

是的,但有沒有在標準錯誤。所以我認爲命令執行成功了。 – waynner

+0

在另一個線程中有一個建議,要使用二進制文件的完整路徑:http://stackoverflow.com/a/17828015/2417347 – maximi

+0

好吧,我會嘗試創建一個用戶線程來處理這個dd命令。但完整的路徑是不是這個問題的問題... – waynner

1

如果你想檢查它的成功,然後嘗試檢查其返回碼。如果它是零,那麼它是成功的。

您需要使用的paramiko運輸檢查返回代碼

chan = s.get_transport().open_session() 

# Execute thecommand 
chan.exec_command(cmd) 
print chan.recv_exit_status() # This will print its return code 
+0

感謝您的答覆。返回碼是'0',所以我認爲命令是由paramiko成功執行的。順便說一句,是否有任何可能由dd命令最初導致我無法在stdout.read()中獲得任何輸出? – waynner

+0

嗯......其奇怪的......你有沒有嘗試手動執行命令..可能是你的版本的dd沒有生成任何輸出..只是一個猜測 – vipulb

相關問題