华为批量下发配置命令使用telnetlib模块

python 复制代码
import telnetlib
import time

# ===================== 配置区(修改以下内容)=====================
# 批量设备列表:[(IP, 端口, 用户名, 密码), ...]
DEVICE_LIST = [
    ("192.168.1.11", 23, "admin", "Huawei@123"),  # 设备1
    ("192.168.1.12", 23, "admin", "Huawei@123"),  # 设备2
]
# 要批量下发的命令(按执行顺序写)
COMMANDS = [
    "sys",    # 示例:进系统模式
    "vlan 10",  # 示例:建立vlan
    "dis vlan",               # 示例:查看配置
]
# 超时/等待参数(根据设备响应速度调整)
CONNECT_TIMEOUT = 10  # 连接超时时间(秒)
CMD_WAIT_TIME = 2     # 执行每条命令后的等待时间(秒)

# ===================== 核心函数 =====================
def telnet_device(host, port, username, password, commands):
    """连接单台设备并执行命令"""
    try:
        # 1. 建立Telnet连接
        tn = telnetlib.Telnet(host, port, timeout=CONNECT_TIMEOUT)
        print(f"\n开始处理设备 {host} ==================================================================")

        # 2. 输入用户名(匹配Username: 提示符)
        tn.read_until(b"Username:", timeout=5)
        tn.write(username.encode('utf-8') + b"\n")
        time.sleep(1)

        # 3. 输入密码(匹配Password: 提示符)
        tn.read_until(b"Password:", timeout=5)
        tn.write(password.encode('utf-8') + b"\n")
        time.sleep(1)

        # 4. 批量执行命令
        for cmd in commands:
            print(f"执行命令:{cmd}")
            # 发送命令(加换行符表示回车执行)
            tn.write(cmd.encode('utf-8') + b"\n")
            time.sleep(CMD_WAIT_TIME)
            # 读取命令执行结果
            result = tn.read_very_eager().decode('utf-8', errors='ignore')
            # 打印结果(仅展示关键内容,避免刷屏)
            print(f"结果:\n{result.strip()[:500]}...")  # 只显示前500字符

        # 5. 关闭连接
        tn.close()
        print(f"设备 {host} 处理完成 ====================================================================\n")

    except Exception as e:
        print(f"设备 {host} 处理失败:{str(e)} ==========================================================\n")

# ===================== 主程序 =====================
if __name__ == "__main__":
    # 遍历设备列表,逐个处理
    for device in DEVICE_LIST:
        host, port, username, password = device
        telnet_device(host, port, username, password, COMMANDS)
    print("所有设备处理完毕!")
相关推荐
小雨青年6 小时前
鸿蒙 HarmonyOS 6 | Pura X Max 鸿蒙原生适配 13:顶部导航在窄窗口下如何简化
华为·harmonyos
祁白_6 小时前
[0xV01D]_Night Traffic_writeUp
网络·安全·ctf·writeup
小江的记录本6 小时前
【JVM虚拟机】垃圾回收GC:四种引用类型:强引用、软引用、弱引用、虚引用(附《思维导图》+《面试高频考点清单》)
java·jvm·spring boot·后端·python·spring·面试
xingyuzhisuan6 小时前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
APIshop6 小时前
Python 获取 1688 商品采集 API 接口 | 工厂货源自动化对接商品信息 | 无需选品
运维·python·自动化
deepin_sir6 小时前
10 - 函数
开发语言·python
charlee447 小时前
《GIS基础原理与技术实践》配套案例(Python版)
python·conda·numpy·gis·环境配置
枫叶林FYL7 小时前
项目十:事件溯源仓储管理系统(WMS)仿真实现
开发语言·python
学习3人组7 小时前
企业交换机OSPF路由协议配置与防护
网络
青风978 小时前
SDDGR:基于稳定扩散的深度生成重放,用于类增量对象检测(CVPR 2024)
网络·人工智能·深度学习·神经网络·计算机视觉