python 未捕获 paramiko IncompanyPeer 异常

问题描述 投票:0回答:1

我有以下代码:

#!/usr/bin/env python3

import paramiko
from paramiko import SSHClient
from paramiko.ssh_exception import IncompatiblePeer

xkey = paramiko.RSAKey.from_private_key_file('./tests/ssh/rsa/valid')
client = SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
try:
    client.connect('192.168.1.2', username='username', pkey=xkey)
except IncompatiblePeer as e:
    print('got IncompatiblePeer')
except paramiko.ssh_exception.IncompatiblePeer as e:
    print('got IncompatiblePeer2')
except:
    print("raw except")

运行它给出:

异常(客户端):不兼容的 ssh 服务器(没有可接受的密码) 回溯(最近一次调用最后一次): 文件“/home/cpp/xython/home/celery/lib/python3.11/site-packages/paramiko/transport.py”,第 2194 行,运行中 self._handler_tableptype 文件“/home/cpp/xython/home/celery/lib/python3.11/site-packages/paramiko/transport.py”,第 2314 行,在 _negotiate_keys 中 self._parse_kex_init(m) 文件“/home/cpp/xython/home/celery/lib/python3.11/site-packages/paramiko/transport.py”,第 2603 行,在 _parse_kex_init 中 引发不兼容对等点( paramiko.ssh_exception.InknownPeer:不兼容的 ssh 服务器(没有可接受的密码)

有不兼容的同伴

所以它捕获了异常,但仍然打印未捕获的堆栈跟踪,即使我可以处理它

我该怎么做才能让它安静下来?

谢谢

我尝试了所有不同的异常 paramiko.ssh_exception.IncompletePeer 与 IncompletePeer

注意:不兼容的对等行为是正常的,我想测试 paramiko 由于 openssh 密码不匹配而无法连接到该主机

python paramiko
1个回答
0
投票

您确定异常发生在连接尝试期间而不是之前吗?

使用覆盖完整 SSHClient 的 try catch 块进行尝试。

#!/usr/bin/env python3

import paramiko
from paramiko import SSHClient
from paramiko.ssh_exception import IncompatiblePeer

xkey = paramiko.RSAKey.from_private_key_file('./tests/ssh/rsa/valid')
try:
    client = SSHClient()
    client.load_system_host_keys()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy)
    client.connect('192.168.1.2', username='username', pkey=xkey)
except IncompatiblePeer as e:
    print('got IncompatiblePeer')
except paramiko.ssh_exception.IncompatiblePeer as e:
    print('got IncompatiblePeer2')
except:
    print("raw except")
© www.soinside.com 2019 - 2024. All rights reserved.