我正在用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:身份验证失败。
我知道凭据是错误的,但我不希望脚本失败,我希望它能显示问题并继续运行脚本的其余部分。
有什么想法吗?
答案 0 :(得分:7)
查看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
但是,您必须编写代码,以便在shell
为None
时不会失败。