python - Paramiko Authentication验证(原来是Python异常处理)

标签 python authentication ssh paramiko

我正在用 Python 编写脚本,使用 Paramiko 为 SSH 连接从 Cisco 路由器中提取配置。我还试图让它验证设备的登录凭据是否正确,不会失败。

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

代码:

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

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

有什么想法吗?

最佳答案

查看 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,您必须编写代码以使其不会失败。

关于python - Paramiko Authentication验证(原来是Python异常处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6372266/

相关文章:

java - C libssh 中的 SSH 客户端用 Java jsch 重写

Python AST : several semantics unclear, 例如表达式上下文

python - 如何缓存读取?

python - 在评估 TensorFlow 模型时,如何在单个前向调用中查看特定隐藏层的值?

session - 可扩展 Web 应用程序的无状态登录/身份验证机制?

linux - 更新 shell 脚本以使用 awk 删除受感染文件中首次出现的 php 代码块

python - 无法使 python 宏工作,只是执行无限循环

mongodb - 无法连接到启用身份验证的 MongoDB

android - 如何从命令行为 Android sdkmanager 设置代理身份验证?

c# - 在 C# 中通过 SSH.NET 隧道连接到 MySQL 数据库时出现 "Unable to connect to any of the specified MySQL hosts"