[英]Netmiko Pattern Not Detected
I ran this code with cisco 2960X switch.我用 cisco 2960X 交换机运行了这段代码。
from netmiko import ConnectHandler
network_device= {
"host": "192.168.xxx.xxx",
"username": "xxxx",
"password": "xxxx",
"device_type": "cisco_ios",
"session_log": "netmiko_session.log"
}
connect= ConnectHandler(**network_device)
connect.enable()
interface_name= "GigabitEthernet1/0/10"
def send_command(command):
return connect.send_command(command)
try:
send_command('enable')
send_command('configure terminal')
except Exception as e:
print(e)
print("Failed!")
But after I got below error.但是在我遇到以下错误之后。
Pattern not detected: 'Switch\\#' in output.
Things you might try to fix this:
1. Explicitly set your pattern using the expect_string argument.
2. Increase the read_timeout to a larger value.
You can also look at the Netmiko session_log or debug log for more information.
Failed!
Please check below to netmiko_session.log请检查下面的 netmiko_session.log
Switch#
Switch#terminal width 511
Switch#terminal length 0
Switch#
Switch#enable
Switch#
Switch#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#
I renamed switch hostname.我重命名了交换机主机名。 But also same error going.
但也有同样的错误。
If you want to do configuration changes, you should consider using ssh.send_config_set
method:如果你想做配置更改,你应该考虑使用
ssh.send_config_set
方法:
from netmiko import ConnectHandler
network_device= {
"host": "192.168.xxx.xxx",
"username": "xxxx",
"password": "xxxx",
"device_type": "cisco_ios",
"session_log": "netmiko_session.log"
}
connect = ConnectHandler(**network_device)
config_commands = [
'hostname NEW_NAME',
'interface Gi1/0/10',
'description NEW_IF_NAME'
]
connect.enable()
connect.send_config_set(config_commands)
connect.save_config()
connect.disconnect()
When you send the command "conf terminal' prompt changes to reflect configuration mode, and it starts to look like Switch(config)#
while netmiko still waits for Switch#
当您发送命令“conf terminal”时,提示符会更改以反映配置模式,它开始看起来像
Switch(config)#
而 netmiko 仍在等待Switch#
So alternatively, if you want to send commands one by one, you can set the expected prompt or use "send_command_timing"所以或者,如果你想一个一个地发送命令,你可以设置预期的提示或使用“send_command_timing”
# this one will just wait 2 seconds before thinking that the command was applied to the device
connect.send_command_timing('hostname NEW_NAME', read_timeout=2)
# this one will expect a custom string from the device after the command is entered
connect.send_command('hostname NEW_NAME', expect_string='(config)#')
# be aware, that if you enter "configure interface" mode prompt will also change
connect.send_command('interface gi1/0/10', expect_string='(config-if)#')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.