Paramiko身份验证(原来是Python异常处理)

2024-05-20 20:59:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个脚本,使用Paramiko从Cisco路由器获取SSH连接的配置。我还试图使它验证登录凭据是否正确的设备没有失败。

现在,如果凭据正确,代码将连接并运行所需的命令。伟大的!但是,如果我给它提供了错误的凭据,脚本将失败,并出现身份验证错误。

代码:

ip = *.*.*.*
u = username
p = password


ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(ip, username=u, password=p)

shell = ssh.invoke_shell()

一旦我启动了这个程序并输入了错误的凭证,这就是输出。

paramiko.AuthenticationException:身份验证失败。

我知道凭据是错误的,但我不希望脚本失败,我希望它显示问题并继续运行脚本的其余部分。

有什么想法吗?


Tags: 代码命令ip脚本身份验证paramiko错误username
1条回答
网友
1楼 · 发布于 2024-05-20 20:59:39

查看Python manual上的第8.3节(处理异常)。您可以“捕捉”异常并对其进行处理,这将防止异常导致程序退出。只有在没有代码捕获异常时,程序才会退出。

try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, username=u, password=p)
    shell = ssh.invoke_shell()
except paramiko.AuthenticationException:
    print "We had an authentication exception!"
    shell = None

但是,如果shellNone,则必须编写代码,这样代码才不会失败。

相关问题 更多 >