如何使用paramiko实现路由器交换机批量配置的自动化学习?
摘要:摘要: 本笔记记录了使用paramiko库批量配置路由器交换机的过程,包括环境搭建、代码实现和注意事项。 声明 本工具仅用于学习和实验,不建议在生产环境中使用。 本文由完全AI基于脚本生成,脚本已在华三模拟器环境中测试通过。 脚本由本人编写
摘要: 本笔记记录了使用paramiko库批量配置路由器交换机的过程,包括环境搭建、代码实现和注意事项。
声明
本工具仅用于学习和实验,不建议在生产环境中使用。
本文由完全AI基于脚本生成,脚本已在华三模拟器环境中测试通过。
脚本由本人编写,并由AI辅助纠错,生成。
🚀 一款简洁实用的 SSH 批量命令执行工具(基于 paramiko)
在最近练习时,结合模拟器环境,写了一个小工具:基于 Python + Paramiko 的 SSH 批量命令执行器,它可以读取 ips.csv 里的设备列表、按设备型号加载对应命令集、依次登陆设备执行命令并生成每台设备的操作日志(包括命令输出)。
它已经在我的华三模拟器里跑通了,下面给大家分享这份脚本的核心设计、使用方法和可扩展点。
📌 核心功能概览
✅ 支持批量设备并行执行
从 ips.csv 读取设备 IP + 设备型号(model)
针对不同型号加载不同命令文件(commands/<model>.txt)
根据 config.json 中 max_workers 设置(默认 5)并发登录设备执行命令。
✅ 支持密码/密钥双认证
config.json 中配置 username/password 或 key_path/key_passphrase
脚本会自动决定使用密钥还是密码连接
✅ 逐设备生成「操作报告文件」
在 report/<timestamp>/ 目录下生成:
全局 ssh_execution_log_<timestamp>.txt
每台设备对应的 IP_sysname_model_operate.txt(包含登录欢迎信息 + 命令输出 + 时间戳)
生成汇总 CSV 文件 report/<timestamp>/ips_operate_summary.csv,包含 IP、系统名、型号、操作状态(成功/失败)、操作日志路径。
✅ 智能获取设备「系统名」
登录后通过 shell 提示符(例如 <Huawei>、user@host#)自动抓取系统名,用于文件命名和日志记录
🧱 关键文件结构(本脚本相关)
mydoc/
└─ para-deep.py # 本脚本:批量 SSH 执行核心逻辑
commands/
├─ default.txt # 默认命令集(如果 型号 是 default)
├─ huawei_1.txt # 每个型号一套命令
├─ huawei_2.txt
├─ H3C_1.txt
├─ H3C_2.txt
└─ ...
ips.csv # 设备列表:IP, 型号
config.json # SSH 认证配置,同时连接设备数量
⚙️ 配置方法(只需三步即可运行)
1) 准备 config.json
示例(密码认证):
{
"username": "admin",
"password": "MySecretPwd"
}
示例(密钥认证):
{
"username": "admin",
"key_path": "~/.ssh/id_rsa",
"key_passphrase": "密钥口令(如果有)"
}
2) 准备 ips.csv
不同型号的设备,命令集文件名中可以包含型号相关信息(例如 huawei_xxxx.txt),脚本会根据 ips.csv 中指定的型号加载对应的命令文件。
型号标记错误时,脚本会默认加载 default.txt 命令集,但可能因命令集不适配导致失败。
示例格式:
192.168.1.10,huawei_xxxx
192.168.1.11,h3c_S6850
# 192.168.1.12,default # 以#开头可注释掉
第一列:IP
第二列:设备型号(对应 commands/<model>.txt)
3) 准备 commands/<model>.txt
以 commands/huawei.txt 为例:
display version
display current-configuration
display interface brief
脚本会按顺序将这些命令发送给设备,并将输出保存到操作文件中。
