从注册表修复Multisim主数据库链接的实战项目应用
2025/12/27 2:26:15
importtelnetlibimporttime# ===================== 配置区(修改以下内容)=====================# 批量设备列表:[(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# 执行每条命令后的等待时间(秒)# ===================== 核心函数 =====================deftelnet_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. 批量执行命令forcmdincommands: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")exceptExceptionase:print(f"设备{host}处理失败:{str(e)}==========================================================\n")# ===================== 主程序 =====================if__name__=="__main__":# 遍历设备列表,逐个处理fordeviceinDEVICE_LIST:host,port,username,password=device telnet_device(host,port,username,password,COMMANDS)print("所有设备处理完毕!")