登录
首页 >  文章 >  python教程

Python批量管理SSHTelnet教程实战

时间:2026-03-13 09:56:33 328浏览 收藏

本文深入讲解如何用Python高效实现网络设备的批量运维管理,聚焦于基于Netmiko(封装Paramiko)的SSH/Telnet自动化实战,强调“稳、准、快”而非代码量——从单台连接验证、YAML/CSV结构化设备信息管理,到ThreadPoolExecutor并发控制与结果归集,全程覆盖真实场景中的高频痛点:提示符识别异常、分页卡顿、交互式确认、中文乱码及厂商差异适配,并以批量采集华为交换机接口状态并导出Excel为典型案例,手把手带读者打通自动化落地的最后一公里。

Python网络运维工具开发教程_SSHTelnet批量管理实战

用Python做网络设备批量管理,核心是把重复操作自动化——SSH和Telnet协议是主流方式,关键不在写多少代码,而在稳、准、快地拿到设备响应并可靠执行命令。

为什么选Paramiko和Netmiko而不是原生socket

直接用socket实现SSH/Telnet协议极其复杂,要处理密钥交换、加密协商、会话保持、缓冲区读取等底层细节。Paramiko是纯Python的SSHv2协议实现,稳定成熟;Netmiko在此基础上封装了厂商特性的适配(如Cisco IOS、华为VRP、H3C Comware的命令提示符识别、分页控制、错误恢复),大幅降低出错概率。

  • Netmiko自动识别设备类型并调整交互逻辑(比如华为设备回车后要等"Press CTRL+C to break"提示才发命令)
  • 内置send_command()自动处理分页(发送"screen-length 0 temporary""terminal length 0"
  • 异常统一为NetMikoTimeoutExceptionNetMikoAuthenticationException等,便于集中捕获

从单台登录到批量执行:三步落地

别一上来就写循环遍历列表,先确保单台能通、命令能跑通、输出能解析,再扩展为批量。

  • 第一步:验证连接与基础命令 用Netmiko连一台设备,执行display version(华为)或show version(思科),打印output确认返回内容含预期字段(如“Huawei”、“IOS”)
  • 第二步:结构化设备信息源 用CSV或YAML存设备IP、端口、用户名、密码、设备类型(huaweicisco_ios等),避免硬编码。YAML示例:
    devices:
      - host: 192.168.1.1
        port: 22
        username: admin
        password: P@ssw0rd
        device_type: huawei
  • 第三步:并发控制+结果归集concurrent.futures.ThreadPoolExecutor限制线程数(如10个),避免大量连接挤爆本地资源或触发设备限速;每台结果存入字典{ip: {"status": "success", "output": "...", "error": None}}

常见坑与绕过方法

真实环境里,不是所有设备都“听话”。以下问题高频出现,有对应解法:

  • Telnet设备无标准提示符:某些老交换机登录后直接进命令行,没[HUAWEI]这类标识。用read_until_prompt_or_pattern配合正则匹配命令行结尾(如r"[#>]$"
  • 命令执行后卡住不返回:可能是分页未关或命令需交互(如save提示“Are you sure?”)。改用send_command_timing(),加delay_factor=2延长等待,并用send_command("y")应答
  • 中文路径/日志导致乱码:连接时显式指定encoding="utf-8",读取输出后用output.encode("latin1").decode("utf-8", errors="ignore")容错转码

实战:批量收集接口状态并导出Excel

目标:对20台华为交换机执行display interface brief,提取物理状态为up的接口名、速率、收发光功率(若支持),写入Excel表格。

  • pandas.read_fwf()解析固定宽文本(Netmiko返回的是空格对齐的字符串)
  • 正则提取关键字段:r"(\S+)\s+(up|down)\s+\S+\s+(\d+G?)\s+"
  • openpyxl创建多sheet,每台一个tab,最后合并汇总页
  • 失败设备单独记入failed.log,含时间戳和错误原因,方便重试

今天关于《Python批量管理SSHTelnet教程实战》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>