我正在尝试使用Netmiko登录到Cisco NXOS设备,并将其启动配置复制到另一个NXOS设备。这是脚本:
core1 = {"device_type":"cisco_nxos","host":"192.168.254.51","username":"admin","password":"admin"}
net_connect = ConnectHandler(**core1)
net_connect.enable()
cmds = [["copy start scp://admin:admin@192.168.254.55/my-backup.cfg vrf management",r"Password"],["admin",""]]
r = net_connect.send_multiline(cmds)
net_connect.disconnect()
代码似乎可以工作,它实际上复制了配置,但在一段延迟(超时(后,它抛出了一个异常:
netmiko.exceptions.ReadTimeout:
Pattern not detected: 'admin' in output.
我不明白自己做错了什么。上面写着模式";管理员";没有检测到,但它确实发送了admin作为密码。也许是因为输入被隐藏了(这是一个密码(Netmiko无法接收输入?会话日志:
Prod-CORE1#
Prod-CORE1# terminal width 511
Prod-CORE1# terminal length 0
Prod-CORE1#
Prod-CORE1#
Prod-CORE1#
Prod-CORE1# copy start scp://********:********@192.168.254.55/my-backup.cfg vrf management
Outbound-ReKey for 192.168.254.55:22
Inbound-ReKey for 192.168.254.55:22
User Access Verification
Password:
Prod-CORE1-startup-config 0% 0 0.0KB/s --:-- ETA
Prod-CORE1-startup-config 100% 5153 544.0KB/s 00:00
Copy complete, now saving to disk (please wait)...
Copy complete.
Prod-CORE1#
Prod-CORE1# exit
有没有一种方法可以用Netmiko处理隐藏的输入;盲目的";命令NXOS上的SCP副本似乎忽略了username:password格式,并且仍然提示输入密码,因此我无法在一行上运行副本。
我刚刚发现cmd_verify=False选项。我做到了:
r = net_connect.send_multiline(cmds,cmd_verify=False)
它现在运行良好