Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 属性错误:模块';paramiko.win#u选美大赛';没有属性';你能和你的代理人谈谈吗;从Windows Server使用Paramiko进行连接时_Python_Multithreading_Ssh_Paramiko_Ssh Agent - Fatal编程技术网

Python 属性错误:模块';paramiko.win#u选美大赛';没有属性';你能和你的代理人谈谈吗;从Windows Server使用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

我目前正在开发一个程序,试图联系运行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="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

我知道应该避免使用“谢谢”评论,但我不能不为此感谢您。在过去的两个工作日里,我一直在断断续续地做这件事,这个问题一直是压力的来源,因为我的最后期限快到了。非常感谢!:)