使用Netmiko进入configuration terminal模式触发ValueError问题求助
问题根因
- 核心原因是设备类型配置不匹配:你当前指定的
device_type为cisco_ios,但从返回的提示符r-hpc-sw19 [standalone: master] #判断,该设备并非标准Cisco IOS设备,大概率为思科NX-OS系列数据中心交换机。cisco_ios驱动默认进入配置模式的校验逻辑为:执行configure terminal后检查提示符是否包含(config)字段,你的设备配置模式提示符格式不符合该规则,因此触发校验失败报错。 - 次要排查点:确认当前登录账号在enable模式下是否拥有进入配置终端的权限,部分低权限账号即使进入enable模式也无法操作配置层。
解决方案
方案1:修正设备类型(优先推荐)
将ConnectHandler中的device_type参数值替换为适配NX-OS设备的cisco_nxos,该驱动已适配带[standalone: master]标识的提示符规则,配置模式校验逻辑也匹配NX-OS的命令体系,修改后即可正常调用config_mode()、send_config_set()方法。
示例代码:
from netmiko import ConnectHandler dev_info = { "device_type": "cisco_nxos", "host": "r-hpc-sw19", "username": "admin", "password": "admin", "secret": "你的enable密码(如果enable需要单独验证请补充该字段)" } net_connect = ConnectHandler(**dev_info) net_connect.enable() # 后续可正常调用配置模式相关方法 net_connect.config_mode()
方案2:手动指定配置模式规则(适用于自定义/小众类思科设备)
如果确认设备不是NX-OS,或需要适配特殊的命令规则,可在调用方法时手动传入配置模式参数,跳过默认的校验逻辑:
# 手动调用config_mode时自定义参数 net_connect.config_mode( config_command="configure terminal", # 可替换为你设备实际的进入配置模式命令 pattern=r"\)#" # 只要提示符匹配)#即判定进入配置模式成功,适配特殊提示符格式 ) # 调用send_config_set时传入自定义配置模式参数 cfg = net_connect.send_config_set( ["你的配置命令1", "你的配置命令2"], config_mode_command="configure terminal", pattern=r"\)#" )
方案3:手动控制全流程(适配后续进入shell的需求)
由于你后续需要执行_shell切换到Linux bash,建议跳过Netmiko的封装方法,自行控制命令交互流程,灵活性更高:
from netmiko import ConnectHandler dev_info = { "device_type": "cisco_nxos", "host": "r-hpc-sw19", "username": "admin", "password": "admin", "secret": "你的enable密码" } net_connect = ConnectHandler(**dev_info) net_connect.enable() # 手动进入配置模式 net_connect.send_command("configure terminal", expect_string=r"#") # 执行许可证导入命令,替换为实际命令 net_connect.send_command("你的许可证导入命令", expect_string=r"#") # 切换到Linux bash net_connect.send_command("_shell", expect_string=r"bash-|~#|\$") # 后续直接发送Linux命令即可 bash_output = net_connect.send_command("ls -l", expect_string=r"bash-|~#|\$")
注意事项
你之前测试时在send_config_set中传入show version | json-print属于不合理操作:show类命令为特权模式命令,不需要进入配置模式执行,直接使用net_connect.send_command("show version | json-print")在enable模式下运行即可。
内容的提问来源于stack exchange,提问作者Ariel Weiser
相关产品推荐
相关产品推荐

