Python 属性错误:模块';paramiko.win#u选美大赛';没有属性';你能和你的代理人谈谈吗;从Windows Server使用Paramiko进行连接时
我目前正在开发一个程序,试图联系运行Cisco IOS的众多路由器,以获取其当前配置。我正试图使用Paramiko模块的Python 属性错误:模块';paramiko.win#u选美大赛';没有属性';你能和你的代理人谈谈吗;从Windows Server使用Paramiko进行连接时,python,multithreading,ssh,paramiko,ssh-agent,Python,Multithreading,Ssh,Paramiko,Ssh Agent,我目前正在开发一个程序,试图联系运行Cisco IOS的众多路由器,以获取其当前配置。我正试图使用Paramiko模块的SSHClient对象实现这一点: def get_config(file_path, ip, ip_number): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(ip, port=22, username
SSHClient
对象实现这一点:
def get_config(file_path, ip, ip_number):
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip, port=22, username="user", password="pw", look_for_keys=False, timeout=None)
stdin,stdout, stderr = ssh.exec_command("show running-config \n")
然后,将配置写入子文件夹中的特定文件,该子文件夹的名称为变量ip\u number
。由于这是通过100多个路由器完成的,所以我尝试使用线程模块来加快进程。当我一次使用多个线程时,我不断遇到的问题开始频繁出现,因此我让程序一次只能使用14个线程(服务器在14核CPU上运行),方式如下:
amount_ip_blocks = int(len(ip_list))/14
if len(ip_list) - 14*amount_ip_blocks != 0:
amount_remaining_ips = len(ip_list) - 14*amount_ip_blocks
for j in range (0, amount_ip_blocks):
threads = []
for i in range (j*14, j*14 + 14):
thread = threading.Thread(target=get_config, args=(path, ip_list[i], i,))
thread.start()
threads.append(thread)
for thread in threads:
thread.join()
最后,对其余IP执行相同的操作
现在,在处理14个IP的第一个块时,这段代码不一致地在不同的线程上同时出现以下0到4次之间的异常(它并不总是thread-1):
线程1中的异常:
回溯(最近一次呼叫最后一次):
文件“D:\Program Files\Python\lib\threading.py”,第932行,在\u bootstrap\u inner中
self.run()
文件“D:\Program Files\Python\lib\threading.py”,第870行,正在运行
自我目标(*自我参数,**自我参数)
文件“D:\location\u of\u my\u program\config\u getter.py”,第99行,在get\u config中
连接(ip,端口=22,用户名=user,密码=pw,查找密钥=False,超时=None)
文件“D:\Program Files\Python\lib\site packages\paramiko-2.7.2-py3.8.egg\paramiko\client.py”,第435行,在connect中
文件“D:\Program Files\Python\lib\site packages\paramiko-2.7.2-py3.8.egg\paramiko\client.py”,第691行,在
文件“D:\Program Files\Python\lib\site packages\paramiko-2.7.2-py3.8.egg\paramiko\agent.py”,第372行,在__
AttributeError:模块“paramiko.win_pageant”没有属性“can_talk_to_agent”
我尝试在网上查找此异常,但找不到任何内容。我也试着研究帕拉米科的代码,看看它是否对我有意义,但没有用。最后,我尝试了调整IP块的大小,较小的块似乎不太容易引起问题,如果问题发生,它总是在第一个IP块上发生。经过大量的实验,我无法推断出任何规律性。
有办法解决这个问题吗?或者在同一个程序中不可能同时使用paramiko运行多个SSH连接?
或者更好的是,有人知道这个问题是如何发生的吗?我没有解决方案,但可能有解决办法。由于您似乎没有使用代理,您是否尝试将其关闭 在通话中设置
allow\u agent=False
。我知道应该避免使用“谢谢”评论,但我不能不为此感谢您。在过去的两个工作日里,我一直在断断续续地做这件事,这个问题一直是压力的来源,因为我的最后期限快到了。非常感谢!:)