我是python的新手,我无法解决我的代码无效的原因。 我正在尝试通过ssh(使用paramiko)通过主机名列表连接到多个服务器。
奇怪的事情发生了,代码只有在文件中有一个主机名才有效,如果它有多个主机名,它就不起作用。 只是为了清楚循环工作正常。
希望你能提前帮助我!
代码:
import sys import os import paramiko client=paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) username='yadayada' password='ladida' ipFile=open("C:\Users\garmiza\Documents\Scripts\TrapToHpsimLinuxIPList.txt","r") for line in iter(ipFile): print "sending trap from " + line client.connect(line,username=username,password=password) command="snmptrap -v 1 -c public 16.19.203.96 enterprises.232 {clientIP} 6 11003 0".format(clientIP=line) stdin, stdout, stderr = client.exec_command(command) ipFile.close()
错误:
File "C:/Users/zaza/PycharmProjects/linuxTrapSending/linuxTrapSending.py", line 16, in <module>
client.connect(line,username=username,password=password)
File "C:\Python27\lib\site-packages\paramiko\client.py", line 301, in connect
to_try = list(self._families_and_addresses(hostname, port))
File "C:\Python27\lib\site-packages\paramiko\client.py", line 199, in _families_and_addresses
hostname, port, socket.AF_UNSPEC, socket.SOCK_STREAM)
socket.gaierror: [Errno 11001] getaddrinfo failed
Process finished with exit code 1
答案 0 :(得分:0)
根据MSDN文档:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms738520(v=vs.85).aspx
getaddrinfo函数提供从ANSI主机名到地址的协议无关转换。
错误代码11001:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx#WSAHOST_NOT_FOUND
找不到主机。 没有这样的主人是已知的。该名称不是正式的主机名或别名,或者在查询的数据库中找不到该名称。协议和服务查询也可能会返回此错误,这意味着在相关数据库中找不到指定的名称。
您必须传递错误的主机名(或者只是一个不存在的主机)。
答案 1 :(得分:0)