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

使用pyATS的Ansible Playbook执行失败,提示‘show: not found’

问题解决:Ansible cli_parse + pyATS 执行Cisco命令报错"/bin/sh: 1: show: not found"

错误原因

ansible.utils.cli_parse模块的command参数默认是在控制节点本地执行Shell命令,而非将命令发送到远程Cisco交换机执行。所以系统会把show ip interface brief当作本地Shell命令处理,自然找不到show命令导致报错。

修复方案

先通过cisco.ios.ios_command获取交换机的命令输出,再将输出传入cli_parse模块进行解析,这样就能避免本地执行命令的问题。

修改后的Playbook代码:

---
- name: pyats parsing test
  hosts: switches
  gather_facts: no
  connection: network_cli

  tasks:
  - name: 获取交换机接口IP简要信息
    cisco.ios.ios_command:
      commands: "show ip interface brief"
    register: sh_ip_int_raw

  - name: 用pyATS解析命令输出
    ansible.utils.cli_parse:
      stdin: "{{ sh_ip_int_raw.stdout[0] }}"
      parser:
        name: ansible.netcommon.pyats
        os: ios
      set_fact: sh_ip_int_parsed

  - debug:
      var: sh_ip_int_parsed

关键说明

  • 显式指定connection: network_cli,确保Ansible通过CLI方式连接网络设备(和你之前成功运行的ios_command模块连接方式一致)
  • 使用ios_command获取命令输出并注册到变量,再通过stdin参数传给cli_parse,让pyATS解析的是交换机返回的真实输出
  • 指定os: ios参数,帮助pyATS识别设备操作系统,提升解析准确率

前置依赖确认

确保控制节点已安装必要组件:

  • 安装pyATS和Genie:pip install pyats genie
  • 安装Ansible集合:ansible-galaxy collection install ansible.utils ansible.netcommon cisco.ios

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 02:47:39