我使用Paramiko嘗試通過主機列表進行爬網。代碼將一直運行,直到列表中的一臺主機不可用。它會產生這個錯誤。在某些不存在的情況下通過主機列表爬行
File "remote.py", line 12, in <module>
ssh.connect(i, username='user', password='pass')
File "/usr/local/lib/python2.7/dist-packages/paramiko/client.py", line 296, in connect
sock.connect(addr)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 113] No route to host
我的代碼:
#!/usr/bin/python
import paramiko
host = ['cpu1','cpu2','cpu3']
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
for i in host:
str(i)
ssh.connect(i, username='user', password='pass')
stdin, stdout, stderr = ssh.exec_command('w')
print stdout.readlines()
ssh.close()
我想腳本運行通過並執行命令。如果它無法連接到主機,則跳過並轉到下一個。我是否缺少一個帶有一些Paramiko參數的if語句?
只要_any_異常發生的次數少於傳遞單個命名異常時的「盲」,如何將某些內容打印到stdout? – Ben
因爲它會以某種方式被記錄下來,所以你可以覆蓋sys.stdout,使其成爲一個文件,或者你可以將輸出傳送到一個文件,然後你可以解析該文件,只是盲目地通過''pass'感覺非常危險,因爲它們程序員沒有辦法檢測到它。 –