2011-12-13 106 views
0

我希望在下面的錯誤被提升到返回錯誤代碼:如何在python + paramiko中將異常處理套接字錯誤?

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "UserManagementRemote.py", line 202, in create_group 
    ssh.connect(hostname, username=user, password=remotepass) 
File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 290, in connect 
    sock.connect(addr) 
File "<string>", line 1, in connect 
socket.error: [Errno 113] No route to host 
>>> 

但我目前有輕鬆沒收引發的錯誤。

try: 
    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(hostname, username=user, password=remotepass) 
except paramiko.AuthenticationException: 
    return 259 
except socket.error: 
    return 261 
chan = ssh.get_transport().open_session() 
chan.exec_command(command) 
codest = chan.recv_exit_status() 
ssh.close() 
return codest 

得到的這個:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "UserManagementRemote.py", line 207, in create_group 
    except socket.error: 
NameError: global name 'socket' is not defined 
>>> 

任何想法?

+1

您是否導入了插座模塊? – Griffin

+0

我以爲我不需要導入任何額外的模塊,因爲當沒有例外的代碼功能如預期。 – dan

回答

3

import socket 

,你做的異常處理模塊中。

要避免將來出現此問題,請在所有源文件上運行pyflakes。這也會遇到很多其他的錯誤。

+0

謝謝,因爲它從來沒有抱怨,直到我確實遇到了異常,我認爲我有我需要的所有東西已經導入。 – dan

+0

@DanielSanabria:如果這解決了問題,請點擊答案旁邊的複選標記。 –