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

如何将记事本中的设备数据导入Python字典供Netmiko连接设备使用

问题解决方法

你原代码的核心问题是:使用file.read().split()会把整个文件的所有空白(包括换行、空格)都作为分隔符,拆分后得到的是所有元素平铺的列表,循环时会把admin也当成ip传入,完全不符合预期。

另外netmiko连接必须指定device_type参数,你原来的字典里漏了这个配置,会直接连接失败,常见设备类型对应值:思科IOS填cisco_ios、华为填huawei、H3C填hp_comware,可根据你实际的设备调整。

完整可运行代码

import netmiko

desktop = "C:\\Users\\Dawid\\Desktop\\"
device_list = []

# 读取设备文件生成配置列表
with open(desktop + "devices.txt", 'r', encoding='utf-8') as file:
    # 逐行读取,跳过空行
    for line in file:
        line = line.strip()
        if not line:
            continue
        # 按空格拆分最多2次,适配密码带空格的场景
        ip, username, password = line.split(maxsplit=2)
        device_info = {
            'device_type': 'cisco_ios', # 替换为你实际的设备类型
            'ip': ip,
            'username': username,
            'password': password
        }
        device_list.append(device_info)

# 循环连接设备
for dev in device_list:
    try:
        conn = netmiko.ConnectHandler(**dev)
        print(f"{dev['ip']} 连接成功")
        # 此处添加你要执行的设备操作逻辑
        conn.disconnect()
    except Exception as e:
        print(f"{dev['ip']} 连接失败,错误信息:{e}")

如果你确定所有设备的账号密码都是固定的admin,也可以简化读取逻辑,只从文件取IP即可:

with open(desktop + "devices.txt", 'r', encoding='utf-8') as file:
    for line in file:
        ip = line.strip().split()[0]
        if not ip:
            continue
        device_info = {
            'device_type': 'cisco_ios',
            'ip': ip,
            'username': 'admin',
            'password': 'admin'
        }
        device_list.append(device_info)

运行前请确保已经安装netmiko依赖:pip install netmiko

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:24:02