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

如何结合账户信息与Excel设备表构建Netmiko ConnectHandler

解决方案

你可以通过合并账户信息字典与Excel中每台设备的信息,为每台设备生成独立的Netmiko连接参数,再循环初始化ConnectHandler会话。具体实现如下:

核心逻辑

  1. 遍历Excel读取到的设备列表,提取每台设备的IP和设备类型;
  2. 将静态账户信息与单台设备信息合并,生成Netmiko要求的完整连接参数;
  3. 基于合并后的参数创建ConnectHandler实例,完成设备连接。

完整代码示例

from netmiko import ConnectHandler
import pandas as pd

# 静态账户信息(后续可优化为用户输入)
accountinfo = {
    'username': 'admin',
    'password': 'password',
    'secret': 'cisco',
}

# 读取Excel中的设备信息(指定列)
devices = pd.read_excel('Hosts.xlsx', usecols='b,e')

# 遍历每台设备创建连接会话
for index, row in devices.iterrows():
    # 合并账户信息与当前设备的IP、设备类型
    device_conn_params = {
        'ip': row['IP'],
        'device_type': row['Device Type'],
        **accountinfo  # 解包账户字典,合并到设备参数中
    }
    
    # 初始化ConnectHandler并执行操作
    try:
        print(f"连接设备 {row['IP']}...")
        conn = ConnectHandler(**device_conn_params)
        # 可选:进入特权模式
        conn.enable()
        
        # 此处可添加命令执行逻辑,例如:
        # output = conn.send_command('show run | include hostname')
        # print(f"设备 {row['IP']} 主机名: {output.strip()}")
        
        conn.disconnect()
        print(f"设备 {row['IP']} 连接已关闭\n")
    except Exception as e:
        print(f"连接设备 {row['IP']} 失败: {str(e)}\n")

关键说明

  • 使用**accountinfo语法解包账户字典,避免重复编写用户名、密码等字段;
  • Excel中Device Type列的取值必须与Netmiko支持的设备类型标识符一致(如cisco_ios、huawei等),否则会导致连接失败;
  • 异常捕获逻辑可避免单台设备连接失败导致整个脚本终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:55:02