importtelnetlibimporttime# ===================== 配置区(修改以下内容)=====================DEVICE_LIST=[("192.168.1.13",23,"admin","Huawei@123"),# 思科设备1#("192.168.1.2", 23, "admin", "Cisco@123"), # 思科设备2]# 思科设备要执行的命令(示例)COMMANDS=["conf t",# 过特权模式"vlan 10",# 配置"show vlan",# 查看配置]CONNECT_TIMEOUT=10CMD_WAIT_TIME=2# ===================== 核心函数(适配思科设备)=====================deftelnet_cisco_device(host,port,username,password,commands):"""连接思科设备并执行命令,适配思科交互逻辑"""try:tn=telnetlib.Telnet(host,port,timeout=CONNECT_TIMEOUT)print(f"\n开始处理思科设备{host}=============================================================")# 1. 适配思科登录提示符(思科常用 Login: 而非 Username:)# 兼容两种提示符,避免匹配失败try:tn.read_until(b"Login:",timeout=5)# 思科默认登录提示符excepttelnetlib.socket.timeout:tn.read_until(b"Username:",timeout=5)# 兼容部分思科设备的Username提示tn.write(username.encode('utf-8')+b"\n")time.sleep(1)# 2. 输入密码(思科密码提示符为 Password:,和华为一致)tn.read_until(b"Password:",timeout=5)tn.write(password.encode('utf-8')+b"\n")time.sleep(2)# 思科登录后加载配置稍慢,延长等待# 3. 进入特权模式(思科核心:普通模式→特权模式,需enable密码)# 如果设备无需enable密码,注释以下3行tn.write(b"enable\n")# 进入特权模式命令tn.read_until(b"Password:",timeout=5)# enable密码提示符tn.write(password.encode('utf-8')+b"\n")# 输入enable密码(通常和登录密码相同)time.sleep(1)# 4. 设置终端不分页(避免命令结果被截断,思科核心优化)tn.write(b"terminal length 0\n")time.sleep(1)# 5. 批量执行命令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')# 过滤掉命令回显(只保留结果)result=result.replace(cmd,"").strip()print(f"结果:\n{result[:800]}...")# 思科结果较长,显示前800字符# 6. 退出并关闭连接tn.write(b"exit\n")tn.close()print(f"思科设备{host}处理完成 ==========================================================\n")exceptExceptionase:print(f"思科设备{host}处理失败:{str(e)}=================================================\n")# ===================== 主程序 =====================if__name__=="__main__":fordeviceinDEVICE_LIST:host,port,username,password=device telnet_cisco_device(host,port,username,password,COMMANDS)print("所有思科设备处理完毕!")锐捷设备批量下发配置telnetlib模块
张小明
前端开发工程师
【课程设计/毕业设计】基于springboot的居民小区物业管理系统的设计与实现“物业办公 - 业主服务 - 数据监管” 三位一体的数字化架构【附源码、数据库、万字文档】
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
乐享云 v1.1.0| 不限速磁力下载,边下边播,内置字幕匹配
这是一款最近新出的免费磁力软件,目前仅提供安卓版。注册登录之后即可无限制使用。只需将磁力链接复制到软件中,等待软件解析完磁力链接后就可以打开磁力文件。如果磁力文件中包含视频资源,软件支持直接在线预览观看视频。同时,软…
Python返回数组/List长度的方法
你想了解在 Python 中获取列表(List,也常被俗称 “数组”)长度的方法,这是 Python 基础中高频使用的操作,核心是通过内置函数实现,同时需要掌握不同场景下的使用细节(比如嵌套列表、numpy 数组等…
运维转行做什么好?零基础入门到精通,收藏这篇就够了
运维工程师转行网络安全是职业发展路径中比较常见的一种转行,这种转行通常基于以下几个原因和优势: **1.技能相关性:**运维工程师通常负责维护和管理企业的IT基础设施,包括服务器、网络和存储系统。这些工作内容与网络安全领域有…
XML 编码:深入解析与实际应用
XML 编码:深入解析与实际应用 引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言。它被广泛应用于互联网、企业内部系统以及移动应用中。本文将深入解析XML编码的原理、规范以及在实际应用中的优势。 一、XML编码概述 1.1 XML的起源与发展 XML最早由W3C(万…
【Python基础】Python字符串操作全攻略:新手入门必备指南
目录 Python字符串操作全攻略:新手入门必备指南1. 引言:什么是字符串?2. 前置知识3. 字符串的创建与访问3.1 创建字符串3.2 访问字符串元素:索引和切片3.3 字符串的不可变性 4. 常用字符串操作方法4.1 获取字符串长度:…