Как обрабатывать ошибки сокета как исключения в 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 ответ
Решение
Делать
import socket
в модуле, где вы делаете обработку исключений.
Чтобы предотвратить эту проблему в будущем, запустите pyflakes на всех ваших исходных файлах. Это также поймает много других ошибок.