2011-12-08 135 views
0

我可以ssh到服務器使用pexpect,並沒有問題登錄和運行命令。但是,我想切換到使用paramiko進行SSH連接,以便我可以利用其他一些paramiko模塊。然而,當我使用的paramiko我得到的錯誤:需要幫助解決paramiko問題

sock.connect((hostname, port)) 
    File "<string>", line 1, in connect 
socket.error: [Errno 113] No route to host 

我不明白爲什麼它說沒有到主機的路由,因爲我可以肯定地到達節點Pexpect的向我展示或只是簡單ssh'ing到節點。

在這裏可能會有什麼問題的任何幫助將不勝感激。我不知道如何解決這個問題。

我正在用這樣的啓用(1)調試的paramiko,但我沒有得到任何調試消息和腳本只是立即失敗:

paramiko.common.logging.basicConfig(level=paramiko.common.DEBUG) 
+1

我不確定,但如果你試圖在詳細模式下ssh可能會有所幫助 – avasal

+0

僅僅因爲你的舊'pexpect'代碼的作品並不意味着你在這個新腳本中沒有值錯誤(考慮' hostname')。在你建立連接之前,你能打印'hostname'和'port'的值以及變量類型並編輯成這個問題嗎? –

回答

1

這將是有益的,如果你能發佈的一個簡單的例子你正在使用的代碼。

檢查,以確保名稱解析正常發生的事情:

socket.gethostbyname(hostname) 

而且,我不知道爲什麼你直接使用socket?或者是你得到的堆棧跟蹤和錯誤消息的一部分,當你

你應該能夠完成你想要的東西是這樣的:

from paramiko.client import SSHClient 
client = SSHClient() 
client.load_system_host_keys() 
client.connect('ssh.example.com') 
stdin, stdout, stderr = client.exec_command('ls -l') 
print stdout 

,如果你提供完整的錯誤這將是更有幫助消息,堆棧跟蹤以及您正在使用的代碼。