Python通过telnet批量管理配置华为交换机

名称: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_cmd



def 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)
Python是一种高级编程语言,它被广泛应用于各种领域,包括网络编程。在Python中,可以使用telnetlib库来实现telnet登录华为交换机,并批量修改登录用户名和密码。 下面是一个简单的示例代码,演示如何使用Python批量修改华为交换机telnet登录用户名和密码: ```python import telnetlib # 定义交换机的IP地址和端口号 host = "192.168.1.1" port = 23 # 定义登录用户名和密码 username = "admin" password = "password" # 定义新的用户名和密码 new_username = "new_admin" new_password = "new_password" # 创建telnet连接 tn = telnetlib.Telnet(host, port) # 登录交换机 tn.read_until(b"Username:") tn.write(username.encode('ascii') + b"\n") tn.read_until(b"Password:") tn.write(password.encode('ascii') + b"\n") # 修改用户名 tn.read_until(b">") tn.write(b"system-view\n") tn.read_until(b"[Switch]") tn.write(b"user-interface vty 0 4\n") tn.read_until(b"[Switch-ui-vty0-4]") tn.write(b"user privilege level 3\n") tn.read_until(b"[Switch-ui-vty0-4]") tn.write(b"authentication-mode aaa\n") tn.read_until(b"[Switch-ui-vty0-4]") tn.write(b"quit\n") tn.read_until(b"[Switch]") tn.write(b"aaa\n") tn.read_until(b"[Switch-aaa]") tn.write(b"local-user " + username.encode('ascii') + b" password cipher " + password.encode('ascii') + b"\n") tn.read_until(b"[Switch-aaa]") tn.write(b"local-user " + username.encode('ascii') + b" privilege level 3\n") tn.read_until(b"[Switch-aaa]") tn.write(b"local-user " + new_username.encode('ascii') + b" password cipher " + new_password.encode('ascii') + b"\n") tn.read_until(b"[Switch-aaa]") tn.write(b"local-user " + new_username.encode('ascii') + b" privilege level 3\n") tn.read_until(b"[Switch-aaa]") tn.write(b"quit\n") # 保存配置并退出 tn.read_until(b"[Switch]") tn.write(b"save\n") tn.read_until(b"[Switch]") tn.write(b"quit\n") # 关闭telnet连接 tn.close() print("用户名和密码修改成功!") ``` 请注意,上述代码仅供参考,实际使用时需要根据具体的华为交换机型号和配置进行相应的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值