问题标签 [python-textfsm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-textfsm - 用于 arp 表输出的 Textfsm 模板
我正在尝试为以下内容创建模板。通过 textfsm 解析器运行时,我没有得到任何匹配,但是当使用正则表达式测试器时,它似乎应该可以工作。
输出:
regex - 正则表达式 - 匹配特定模式下的单词/字母
非常不寻常的一个,但我正在尝试匹配来自 SSH 会话的输出,该会话可能会折叠视图并低于所需的输出(如折叠的列)......
看一下示例输出:
我可以将第一行与:
^([a-zA-Z0-9][a-zA-Z0-9.-]+[a-zA-Z0-9])
它返回(rtr1.lab01.some 和 rtr2.lab01.some),但我试图找到基于完整主机名(rtr1.lab01.something 和 rtr2.lab01.somethingelse)匹配它的最简单方法
我也很好地匹配了其余的输出并且能够提取数据,但真的找不到实现我正在尝试的方法......有人能指出我正确的方向吗?进一步扩展(更多上下文......我在 Python 中使用 Google TextFSM 来匹配来自 SSH 会话的所有这些数据)
python - Netmiko 和 Textfsm 路径和环境问题窗口
我目前正在尝试在 Windows 10 中使用 Netmiko 和 Textfsm 设置测试,但无论我尝试设置 textfsm 环境变量的路径是什么,它仍然无法拾取并引发错误:
未找到有效的 ntc-templates,请安装https://github.com/networktocode/ntc-templates 然后将 NET_TEXTFSM 环境变量设置为指向 ./ntc-templates/templates 目录。
我尝试通过系统属性-> 环境变量手动设置环境变量,但仍然得到相同的消息。我尝试了绝对路径和相对路径,但没有成功。理想情况下,模板文件夹的相对路径将始终与调用它的脚本并排。这可能很简单,但我现在完全想念它。
文件夹结构:
我的代码:
我希望有人指出可能有什么问题或遗漏。我希望避免通过 cmd 设置任何环境变量,除非它也可以自动化。这个想法是打开这个 py 文件的人可以获得使用 textfsm 所需的一切。
python - parse_cli_textfsm 过滤器需要安装 TextFSM 库
我正在尝试在我正在编写的剧本中使用 Textfsm。
每次我运行剧本时,我都会收到错误消息。{"msg": "parse_cli_textfsm 过滤器需要安装 TextFSM 库"}
我已经完成了 Textfsm 的 pip 安装。我正在使用 Centos。
解释器设置为 [all:vars] ansible_python_interpreter="/usr/bin/python3"
ansible.cfg 包含
ansible - 尝试在 Ansible 剧本中使用“selectattr in”过滤器,但按照下面的剧本失败
我正在尝试使用 textfsm 解析管理显示平台的数据,因为任何状态为“IOS XR RUN”、“READY”或“OK”的东西都会通过,其他任何东西都会报告失败。我正在使用 selectattr in 选项,但收到以下错误 - “msg”:“任务包含一个带有未定义变量的选项。错误是:'intf_tests_pass'未定义。任何想法为什么这会失败,因为 working_state 变量是定义。
名称:收集管理员显示平台信息 iosxr_command:命令:-管理员显示平台提供程序:“{{ cli }}”注册:platform_result 时间:device_os == 'cisco-ios-xr'
名称:检索要返回的状态 set_fact:working_state:['IOS XR RUN','READY','OK']
名称:解析 platform_result textfsm_parser:文件:templates_textfsm/{{ device_os }}/admin_show_platform.template 内容:“{{ platform_result.stdout.0 }}” 名称:platform_state 何时:
- platform_result.stdout 已定义
- platform_result.stdout[0] != 无
- platform_result.stdout[0] != ""
name: 识别通过 set_fact: platform_tests_pass: "{{ ansible_facts.platform_state | selectattr('STATE', 'in', 'working_state') | list }}" when: ansible_facts.platform_state 定义的平台结果
名称:识别失败的平台结果 set_fact:platform_tests_fail:“{{ ansible_facts.platform_state | difference(platform_tests_pass) | list}}” when: ansible_facts.platform_state 已定义
调试:味精:
- “{{ intf_tests_pass }}”
- “{{ intf_tests_fail }}”
谢谢,布赖恩
netmiko - 用于“inc”短语的 Netmiko 的 TextFSM 模板
我正在尝试使用 Netmiko 库创建一个 textfsm 模板。虽然它适用于大多数命令,但当我尝试在网络设备中执行“inc”操作时它不起作用。textfsm 索引文件似乎无法识别 2 个不同模板的相同命令;例如:
- 如果我给出命令 - 显示正在运行 | 公司系统联系人
- 并给出另一个命令 - show running | 公司系统定位
在 textfsm 索引中;textfsm 模板似乎只识别第一个命令;而不是第二个命令。
我知道我可以通过命令的 syscontact 和 syslocation 的正则表达式获取必要的数据(通过模板),但是我想通过设备本身的“inc”命令来实现这一点。有没有办法做到这一点?
python - 有没有办法在 TextFSM 的状态更改中继续使用同一行?
我知道我不能将状态转换与 continue 语句结合起来。
我正在尝试使用 ansible 解析网络配置,其中行的唯一明确的结尾是下一个的开头。
例如,我想解析如下配置:
我正在使用的模板:
因此,我必须知道我完成vty 0 4的唯一确定方法是vty 5 16启动。
那么,为了保存新的vty,是否可以继续使用该行?目前我的模板正在将上一行的配置保存在下一行中。我无法知道最后一行的可能性。
更新:这里是针对此特定问题的解决方案的更新。谢谢。
parsing - 如何使用 textfsm 解析具有级联元素的 CLI 输出
我正在尝试使用 textfsm 和 python 解析具有级联元素的 CLI 输出。这是一个示例:参考 - https://github.com/google/textfsm/wiki/TextFSM
使用这个例子。如何获取每个 Slot 的“CPU 利用率”值?
模板
输出:
如您所见,CPU 利用率元素没有被填充。
我真的很感激任何指针
ansible - Ansible Jinja2 模板 - 捕获 textfsm 异常
我在 Jinja2 模板中使用 textfsm 过滤器来创建报告。textfsm 过滤器可能会引发异常,从而阻止 Jinja2 模板完成。
下面是我如何在 Jinja2 模板中调用 textfsm 过滤器。textfsm 过滤器返回一个字典列表,我在模板中打印出来。
有没有办法让 textfsm 过滤器在发生错误时返回一个说“错误”的字符串?然后我可以对此进行测试并显示适当的消息。基本上,我希望模板完成,尽管有例外。
regex - 使用与这些行中的任何一个匹配的组的单个正则表达式
我正在寻找一个匹配这两条线中的任何一条的正则表达式,并捕获/分组速度和双工的值。
第 1 行应具有值为“1000Mbps”的第 1 组和值为“满”的第 2 组。第 2 行只有第 1 组,值为“n/a”
这是我能得到的最接近的,试图在嵌套组中使用备用。它让我得到速度值,而不是双工值。
更长的版本
这是一个 TextFSM 模板。我将在此处包含这些详细信息,以防使用 FSM 有一种简单的方法可以完成上述操作。
样本数据:
这是我正在使用的模板文件:
我已经对上述内容进行了多次尝试,包括第二行以匹配没有“双工”的“速度”。尝试让两行都记录动作,或者只有一个,或者最后一个包罗万象。有没有办法在 FSM 中指定 OR 类型的语句?尝试匹配输入行,如果不匹配,试试那个?
编辑:感谢您的回复。但是,我无法获得在 TextFSM 中工作的任何示例。