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

Jay*_*way 6 python authentication ssh paramiko

我正在用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()
Run Code Online (Sandbox Code Playgroud)

一旦我启动程序并输入错误的凭据,这就是输出.

paramiko.AuthenticationException:身份验证失败.

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

有任何想法吗?

Pac*_*ace 7

请查看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
Run Code Online (Sandbox Code Playgroud)

但是,你必须编写代码,这样,如果没有失败shellNone.