1

我在寻求一些帮助。我正在尝试编写脚本以通过 SSH 连接到设备,如果身份验证失败,则打印出“登录失败”语句。不幸的是,错误处理似乎不起作用并引发错误,请参阅下面的跟踪。

任何意见,将不胜感激。我是 python 新手。

非常感谢瑞克

from netmiko import Netmiko
from getpass import getpass
from netmiko import ssh_exception
from paramiko.ssh_exception import AuthenticationException
from netmiko.ssh_exception import NetmikoAuthenticationException
import sys

Netmiko(
"1.1.1.1",
username="fred",
password=getpass(),
device_type="cisco_ios",
)


try:
   net_connect = ConnectHandler(**Netmiko)
except (AuthenticationException, NetmikoAuthenticationException):
   print("Login failed")
   sys.exit()

print(net_connect.find_prompt())
net_connect.disconnect()```



Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 892, in establish_connection
    self.remote_conn_pre.connect(**ssh_connect_params)
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 446, in connect
    passphrase,
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 764, in _auth
    raise saved_exception
  File "/usr/local/lib/python3.6/site-packages/paramiko/client.py", line 751, in _auth
    self._transport.auth_password(username, password)
  File "/usr/local/lib/python3.6/site-packages/paramiko/transport.py", line 1509, in auth_password
    return self.auth_handler.wait_for_response(my_event)
  File "/usr/local/lib/python3.6/site-packages/paramiko/auth_handler.py", line 250, in wait_for_response
    raise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "LoginCheck.py", line 13, in <module>
    device_type="cisco_ios",
  File "/usr/local/lib/python3.6/site-packages/netmiko/ssh_dispatcher.py", line 252, in ConnectHandler
    return ConnectionClass(*args, **kwargs)
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 318, in __init__
    self._open()
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 323, in _open
    self.establish_connection()
  File "/usr/local/lib/python3.6/site-packages/netmiko/base_connection.py", line 905, in establish_connection
    raise NetmikoAuthenticationException(msg)
netmiko.ssh_exception.NetmikoAuthenticationException: Authentication failure: unable to connect cisco_ios 1.1.1.1:22




4

2 回答 2

0

而不是在中打印“登录失败” except,您可以简单地收集所有异常,如下所示:

except Exception as e:
    print(e)

通过这种方式,您可以收集每个异常。

于 2020-03-04T13:41:53.093 回答
0

在定义您的 Netmiko 参数时,您key:value为除 IP 地址之外的所有内容提供对,在其中您仅提供“值”。您始终需要为任何值提供“密钥”。此外,在定义 Netmiko 参数时,请将它们括在大括号中,而不是括号中。您应该查看您的导入语句,它们可以被清理。确实,您应该在编写时尝试更多地关注细节,因为这在编写脚本时非常重要。

Netmiko{
ip: "1.1.1.1",
username: "fred",
password: getpass(),
device_type: "cisco_ios"
}
于 2021-01-29T12:49:14.193 回答