You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:55:52