如何用Python脚本Telnet登录华为交换机并读取基础信息?
用Python通过Telnet登录华为交换机读取设备信息
我看你已经搞定思科路由器的Telnet登录脚本了,华为交换机的交互逻辑和思科略有不同,我帮你把代码补全并调整适配华为的流程,这样就能顺利读取display int brief这类基础信息啦~
适配华为交换机的完整代码
import telnetlib import datetime now = datetime.datetime.now() host = "myhost" # 替换成你的交换机IP username = "user" # 替换成你的登录用户名 password = "pass" # 替换成你的登录密码 try: # 建立Telnet连接,设置6秒超时 tn = telnetlib.Telnet(host, 23, 6) # 等待用户名提示符,发送用户名 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"screen-length 0 temporary\n") # 执行display int brief命令 tn.write(b"display int brief\n") # 读取命令输出,直到回到用户视图提示符 output = tn.read_until(b"<").decode('utf-8') # 打印输出结果,也可以保存到文件里 print(f"[{now.strftime('%Y-%m-%d %H:%M:%S')}] 设备接口信息:") print(output) # 退出Telnet连接 tn.write(b"quit\n") tn.close() except Exception as e: print(f"操作出错啦:{str(e)}")
几个关键细节说明
- 编码处理:用
encode('ascii')把字符串转成字节流发送,再用decode('utf-8')把设备返回的字节流转成字符串,适配华为设备的编码逻辑 - 关闭分页:执行
screen-length 0 temporary可以临时关闭命令输出的分页功能,避免接口信息被截断,不用重启设备也不会永久生效 - 提示符匹配:用
b"<"匹配用户视图提示符,不管你的交换机设备名是什么(比如<Huawei>或者<SW-Office>),都能准确捕获到,比写死设备名更通用 - 异常处理:捕获连接超时、认证失败等异常情况,方便你排查问题
额外注意事项
- 要确保你的华为交换机已经开启Telnet服务:在设备上执行
telnet server enable命令开启 - 确认登录用户有足够的权限执行
display int brief这类查询命令 - 如果你的交换机登录提示符是中文(比如
请输入用户名:),记得把tn.read_until里的匹配字符串改成对应的中文字节流,比如b"请输入用户名:"
内容的提问来源于stack exchange,提问作者user1509513
相关产品推荐
相关产品推荐

