gpt4 book ai didi

python - 属性错误 : module 'paramiko.win_pageant' has no attribute 'can_talk_to_agent' when connecting using Paramiko from Windows Server

转载 作者:行者123 更新时间:2023-12-03 13:01:59 25 4
gpt4 key购买 nike

我目前正在开发一个程序,该程序尝试联系运行 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_number 的子文件夹内的特定文件。作为它的名字。由于这是通过一百多个路由器完成的,因此我尝试使用线程模块来加速该过程。当我一次使用更多线程时,我一直遇到的问题开始更频繁地发生,因此我以这种方式使程序一次只能使用 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 的第一个 block 时,此代码不一致地在不同线程上一次在零到四次之间给我以下异常(它并不总是线程 1):
Exception in thread Thread-1:
Traceback (most recent call last):
File "D:\Program Files\Python\lib\threading.py", line 932, in _bootstrap_inner

self.run()
File "D:\Program Files\Python\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "D:\location_of_my_program\config_getter.py", line 99, in get_config
ssh.connect(ip, port=22, username="user", password="pw", look_for_keys=False, timeout=None)
File "D:\Program Files\Python\lib\site-packages\paramiko-2.7.2-py3.8.egg\paramiko\client.py", line 435, in connect
File "D:\Program Files\Python\lib\site-packages\paramiko-2.7.2-py3.8.egg\paramiko\client.py", line 691, in _auth
File "D:\Program Files\Python\lib\site-packages\paramiko-2.7.2-py3.8.egg\paramiko\agent.py", line 372, in __init__
AttributeError: module 'paramiko.win_pageant' has no attribute 'can_talk_to_agent'
我曾尝试在网上寻找此异常,但找不到任何东西。我还尝试查看 paramiko 的代码,看看它是否对我有意义,但无济于事。最后,我尝试调整 IP block 的大小,较小的 block 似乎不太经常引起问题,如果发生,它总是在第一个 IP block 上发生。经过广泛的实验,我无法推断出任何规律。
有没有办法解决这个问题?还是根本不可能同时/在同一个程序中使用 paramiko 运行多个 SSH 连接?
或者更好的是,有人知道这个问题是如何发生的吗?

最佳答案

我没有解决方案,但也许是一种解决方法。由于您似乎没有使用代理,您是否尝试将其关闭?
设置 allow_agent=False SSHClient.connect 称呼。

关于python - 属性错误 : module 'paramiko.win_pageant' has no attribute 'can_talk_to_agent' when connecting using Paramiko from Windows Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66041926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com