使用Nornir调用Netmiko时遇到设备类型不支持问题
解决Nornir + Netmiko连接Cisco设备时的「Unsupported device_type」错误
这个错误提示很明确——Netmiko找不到对应Cisco设备的device_type配置,导致无法建立连接。我来给你拆解排查步骤:
1. 检查Inventory里的主机配置是否正确
Nornir是通过主机的platform字段来映射Netmiko的device_type的,所以你需要确保每个Cisco主机都设置了正确的platform值:
- 对于Cisco IOS设备,
platform应该设为cisco_ios - 如果是NX-OS设备,设为
cisco_nxos,以此类推
举个hosts.yml的正确示例:
cisco_router: hostname: 192.168.100.1 username: your_username password: your_password platform: cisco_ios # 关键字段,Netmiko靠它识别设备类型
2. 确认Nornir配置文件的连接插件设置
检查你的config.yml里是否正确启用了Netmiko连接插件,确保没有拼写错误:
inventory: plugin: SimpleInventory options: host_file: "hosts.yml" group_file: "groups.yml" connections: netmiko: plugin: nornir_netmiko.connections.netmiko # 正确的插件路径 extras: global_delay_factor: 1 # 可选的额外参数
3. 手动指定device_type(应急方案)
如果自动映射失效,你可以在调用netmiko_send_command时直接指定device_type参数,绕开Inventory的映射逻辑:
result = test.run( netmiko_send_command, command_string="sh ver", device_type="cisco_ios" # 直接告诉Netmiko设备类型 )
4. 更新Netmiko版本
如果你的Netmiko版本太老,可能不支持某些Cisco设备的device_type,执行命令更新到最新版:
pip install --upgrade netmiko
核心问题就是Nornir没有把你过滤的「Cisco」平台主机,正确映射到Netmiko能识别的device_type上,按照上面的步骤逐一排查应该就能解决。
内容的提问来源于stack exchange,提问作者benanater
相关产品推荐
相关产品推荐

