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

通过Netmiko登录Mellanox交换机执行ping命令卡住问题求助

问题原因

你遇到的卡住问题本质是Mellanox交换机默认ping命令会持续发送ICMP报文,不会自动终止,Netmiko的send_command方法默认会一直等待设备返回CLI提示符,命令未结束时不会返回,因此会进入假死状态,fast_cli配置仅调整命令发送速率和超时阈值,无法解决命令本身不终止的问题。

解决方案
  • 方案1:给ping命令加次数限制(最推荐)
    Mellanox Onyx操作系统的ping命令支持-c参数指定发送ICMP包的数量,执行完成后命令自动终止,无需额外处理即可正常获取结果。
    代码示例:
    # 指定发送4个包后自动停止
    ping_result = net_connect.send_command(f'ping {ilo_ip} -c 4')
    # 后续可通过返回结果中的丢包率字段(如0% packet loss)判断通断状态
    
  • 方案2:手动执行无限制ping后主动中断
    如果业务需要执行一段时间ping再停止,可搭配write_channel手动发送中断信号终止进程,再读取输出内容:
    import time
    # 写入ping命令
    net_connect.write_channel(f'ping {ilo_ip}\n')
    # 等待ping执行指定时长
    time.sleep(3)
    # 发送Ctrl+C对应的ASCII转义字符终止ping进程
    net_connect.write_channel('\x03')
    # 读取全部执行输出
    ping_result = net_connect.read_channel()
    
  • 额外注意事项
    初始化ConnectHandler时需正确指定device_type为mellanox_onyx,错误的设备类型会导致提示符匹配异常,也可能引发命令执行卡住的问题。初始化示例:
    from netmiko import ConnectHandler
    dev_params = {
        "device_type": "mellanox_onyx",
        "host": "交换机管理地址",
        "username": "登录用户名",
        "password": "登录密码",
        "fast_cli": False
    }
    net_connect = ConnectHandler(**dev_params)
    

内容的提问来源于stack exchange,提问作者curious_21

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:45:04