名称:Python通过telnet批量管理配置华为交换机
测试工具:ensp, Visual Studio Code , Python3.8环境
时间:2023.12.23
个人备注:在NB 项目中,可以批量登录修改交换机配置,以此满足甲方爸爸的无故增加的需求。
1. 脚本需要用到的CVS表格文件
user-cmd.csv #用于保存需要配置到交换机命令
user-info.csv #用于保存交换机IP,用户名,密码
2. 下面是表格内容示范
3. eSNP 拓扑示例
4. 脚本文件,需要自己提前下载好对应的模块。
import telnetlib
import time
import getpass
from netmiko.huawei.huawei import HuaweiTelnet
import pandas as pd# 用法示例
文件路径 = 'user-info.csv'
命令表格= 'user-cmd.csv'
telnet端口 = 23 # 根据实际情况修改端口号
#命令列表 = ['display ip int brief | include Vlan','dis version']
#telnet主机 = '192.168.56.10'
#用户名 = 'admin'
#密码 = 'abc-123'###########交换机 IP,账户,密码调用
def 提取IP账户密码信息(文件路径):# 用 pandas 的 read_csv 方法读取 CSV 文件表格数据 = pd.read_csv(文件路径)# 提取 IP、账户和密码列的数据ip列表 = 表格数据['IP'].tolist()账户列表 = 表格数据['账户'].tolist()密码列表 = 表格数据['密码'].tolist()#telnet执行命令(ip列表, telnet端口,命令列表,账户列表,密码列表)return ip列表, 账户列表, 密码列表###########交换机命令批量调用
def cmd_list(cmd_pash):# 用 pandas 的 read_csv 方法读取 CSV 文件cmd_data = pd.read_csv(cmd_pash)# 提取 IP、账户和密码列的数据input_cmd = cmd_data['命令'].tolist()#telnet执行命令(ip列表, telnet端口,命令列表,账户列表,密码列表)return input_cmddef telnet执行命令(主机, 端口, 命令列表,用户名,密码):# 创建 Telnet 对象连接 = telnetlib.Telnet(主机, 端口, timeout=2)# 登录连接.read_until(b'Username:', timeout=2)连接.write((用户名 + '\n').encode('ascii'))连接.read_until(b'Password:', timeout=2)连接.write((密码 + '\n').encode('ascii'))# 逐个发送命令for 命令 in 命令列表:连接.write((命令 + '\n').encode('ascii'))time.sleep(0.1)# 读取输出,注意:在实际使用中,你可能需要根据命令的特定输出来判断是否需要等待更长的时间输出 = 连接.read_until(b'prompt', timeout=1).decode('ascii')print(输出)# 关闭 Telnet 连接连接.close()###############################################################
# 调用函数并传入 CSV 文件的路径
提取IP账户密码信息(文件路径)
cmd_list(命令表格)cmd_list1 = cmd_list(命令表格)
ip列表, 账户列表, 密码列表 = 提取IP账户密码信息(文件路径)# 运行脚本,调用CVS > 提取的值给 telnet函数
for ip, 账户, 密码 in zip(ip列表, 账户列表, 密码列表):#print(f'IP: {ip}, 账户: {账户}, 密码: {密码}')print(f'开始登录:{ip}')telnet执行命令(ip, telnet端口,cmd_list1,账户,密码)time.sleep(0.1)