如何处理paramiko中的[Errno -2]?

How to handle [Errno -2] in paramiko?

我有脚本可以登录到多个服务器并获取输出。在登录过程中,一些服务器抛出这个错误:

"[Errno -2] Name or service not known"

这会导致脚本在中间中断。我该如何处理这个异常?我已经使用了 try/except,但它似乎没有用:

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ip  = open("files.txt","r")
data = ip.readlines()
try:
  for ips in data:
  ips = ips.strip("\n")
  ssh.connect(ips,username='Lock',password='Key',timeout=10)
  chan = ssh.get_transport().open_session()
  chan.get_pty()
  chan.exec_command("uname -a")
  result =  [chan.recv(1024)]
except Exception as e:
  print e

注意:服务器名称保存在 files.txt

如果您希望脚本继续循环中的下一个地址,您需要将 try/except 放在 for 循环中:

for ips in data:
    try:
        ips = ips.strip("\n")
        ssh.connect(ips, username='Lock', password='Key', timeout=10)
        ...
    except Exception as e:
        print e