7

我正在用 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:身份验证失败。

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

有任何想法吗?

4

1 回答 1

8

查看Python 手册中的第 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

但是,您必须编写代码,以免在shellis时失败None

于 2011-06-16T13:33:45.283 回答