You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:54:04