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

Netmiko多设备连接脚本报错求助:TypeError问题排查

问题分析与解决

错误原因

  1. 函数get_interface定义中使用**kwargs,这是用于接收可变数量的关键字参数(键值对形式),但你调用时传入的cisco_ios是一个列表,属于位置参数,导致参数数量不匹配,触发第一个TypeError。
  2. 当你尝试用**cisco_ios调用时,**操作符要求其后必须是字典(映射类型),但cisco_ios是列表,因此触发第二个TypeError。

修正后的代码

from netmiko import ConnectHandler

cisco_ios = []

sandbox_cisco = {
    "device_type": "cisco_ios",
    "host": "sandbox-iosxe-latest-1.cisco.com",
    "port": "22",
    "username": "developer",
    "password": "C1sco12345"
}
cisco_ios.append(sandbox_cisco)

# 注意:IOS XR设备的device_type应改为"cisco_xr",避免后续连接问题
sandbox_cisco_2 = {
    "device_type": "cisco_xr",
    "host": "sandbox-iosxr-1.cisco.com",
    "port": "22",
    "username": "admin",
    "password": "C1sco12345"
}
cisco_ios.append(sandbox_cisco_2)


command = "show interfaces description"

# 修改函数参数,直接接收设备列表
def get_interface(command, devices):
    for ne in devices:
        net_connect = ConnectHandler(**ne)
        comando = net_connect.send_command(command)
        net_connect.disconnect()
        print(comando)

# 直接传入命令和设备列表
get_interface(command, cisco_ios)

关键修正点

  • 函数参数从**kwargs改为devices,使其能够接收设备列表作为位置参数。
  • 遍历devices列表中的每个设备字典,用**ne解包字典为Netmiko所需的关键字参数。
  • 修正了第二个设备的device_type为cisco_xr(IOS XR设备对应的类型),避免后续可能的连接失败问题。

内容的提问来源于stack exchange,提问作者Martin Barbieri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:01:18