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

使用Netmiko send_command读取交换机文件无输出,求解决方案

问题:Netmiko执行长耗时Linux命令无输出及替代方案咨询

我用Python编写了一个脚本,用于登录交换机并读取交换机内存储文件的输出(该输出是对文件内容执行正则处理后的结果)。在交换机Linux提示符下执行对应命令时,需约100秒才能得到输出。我尝试使用Netmiko的send_command方法,设置delay_factor=10来将输出存储到变量中,但未得到任何输出。请问是否遗漏了基础配置?相关代码如下:

import time
from netmiko import ConnectHandler

def getSIPsFromFile(log, hdl, device_type):
    file_name = 'file_1_' + device_type
    print('\n *** Value of File name is : {0}  ***\n'.format(file_name))
    # cmd = "grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' {0}".format(file_name)
    cmd = 'cat {0} | grep \'[0-9]\{{1,3\}}\.[0-9]\{{1,3\}}\.[0-9]\{{1,3\}}\.[0-9]\{{1,3\}}\' | awk \'{{print $4}}\''.format(file_name)
    print('\n   *** Value of cmd is :  {0} **** \n'.format(cmd))
    hdl.send_command('start-shell' , expect_string = "$")
    hdl.send_command('cd /tmp' , expect_string = "$")
    print(' *** Prompt is : {0}  *** '.format(hdl.find_prompt()))
    res = hdl.send_command(cmd, expect_string = "$" , delay_factor = 10)
    time.sleep(60)
    print(res)

vsx_pri_hdl = ConnectHandler( device_type='cisco_nxos', ip=args.vsx_primary_mgmt_ip, \
    username=args.username, password=args.password, blocking_timeout=500 )

另外,如果此方法不可行,是否应考虑下载文件到本地进行分析?


问题排查与修复方案

  • 显式设置命令超时:send_command的timeout参数独立于blocking_timeout,默认值可能远小于100秒。建议在调用send_command时添加timeout=120(比实际命令耗时多预留20秒),确保有足够时间等待命令执行完成。
  • 改用send_command_timing方法:该方法不依赖提示符匹配,而是基于时间间隔等待输出结束,更适合长耗时、无固定交互的命令。替换代码:res = hdl.send_command_timing(cmd, delay_factor=10, timeout=120)。
  • 验证命令转义正确性:将打印出的cmd内容复制到交换机shell中手动执行,确认命令能正常输出结果。Python字符串中的转义字符可能导致命令变形,比如\{1,3\}在实际传递时是否正确解析为正则表达式的量词?
  • 移除多余的time.sleep(60):send_command本身是阻塞式的,会等待命令执行完成或超时后才返回,额外的sleep只会浪费时间,无需保留。

替代方案:下载文件到本地分析

如果远程执行命令的方案始终存在问题,下载文件到本地处理是更可靠的选择:

  • 利用Netmiko的file_transfer方法,通过SFTP协议将交换机/tmp目录下的目标文件下载到本地(需确保交换机开启了SFTP服务)。
  • 本地处理文件不受交换机环境限制,更灵活,且能避免远程命令的超时、交互匹配等问题,尤其适合大文件或复杂的数据分析场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:15:43