问题标签 [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.

0 投票
1 回答
272 浏览

python - Python - Textfsm - Fortigate - 解析名称:,有效自:,有效至:

使用 Textfsm 我正在尝试获取以下输出:

姓名: 有效期自: 有效期至:

我认为问题在于我的模板中要在 == [ Fortinet_CA_SSL ] 之后搜索的位置,但希望得到一些帮助。

输出:

模板:

0 投票
1 回答
319 浏览

python-textfsm - 为 Cisco XR 创建 Textfsm 模板 // 显示 isis 数据库

我正在尝试在 Cisco XR 中为 show isis 数据库输出创建模板,我不明白出了什么问题。有人可以指出吗?我什至无法使用 textfsm.TextFSM(template) 命令加载模板。

模板:

0 投票
1 回答
288 浏览

parsing - TextFsm:思科 NXOS

我已经开始通过 google 探索 TextFSM,它非常适合屏幕抓取。但我被困住了。这是命令的模板: vsh_lc -c "show platform internal bcm-usd funcstats"

原始输出:

由于某种原因没有解析成表值。请帮忙!!!

0 投票
0 回答
87 浏览

c# - 在 C# 中从 ironpython 调用第 3 方模块 python 函数

我必须从 c# 调用 textfsm python 模块函数。我为此使用 Ironpython。

当前代码

在此之后我没有得到如何执行 textfsm 代码。如何传递模板并获取输出。

0 投票
1 回答
2951 浏览

regex - 有没有办法用 TextFSM 一次记录多行?

我想cphaprob -a if使用 TextFSM 解析通过 Netmiko 执行的检查点防火墙。最终生成的列表格式不正确。

我已经尝试了很多 TextFSM 命令组合,但也许我只是无法理解它是如何正常工作的。

原始命令输出

以下是cphaprob -a if原始输出。我想解析虚拟上下文(例如'vcont 0')、接口名称(例如'bond0')、虚拟接口(例如'bond0.2121')和它们的主机名(例如'10.105.0.42')。


TextFSM 模板

预期成绩


实际结果

如您所见,我只获得了第一次出现的虚拟接口及其相应的 IP 地址。原因可能是在我的集群状态模板中,我在^${VirtualInterface}\s+${IPv4} -> Record Start. 我只是不知道如何在其相应列表中获取所有虚拟接口和 IP 地址。

0 投票
0 回答
171 浏览

python-textfsm - 如果模式不匹配,我想在正则表达式中保留默认值

如果模式不匹配,我想在正则表达式中保留默认值

以上是我的 python textfsm 模板。在这里,如果我的正则表达式不匹配,那么我想保留默认值而不是丢弃。

0 投票
2 回答
603 浏览

regex - 如何从字符串中提取逗号分隔的子字符串?

需要在组中解析以逗号分隔的算法。

我试图用逗号分隔它们,但没有得到预期的结果:

预期结果是第 1 组中的每个算法没有空组

0 投票
1 回答
355 浏览

python - 如何使用正则表达式(TextFSM模板)单独匹配单行CLI输出(LLDP)的三个单独部分

我正在使用 Ansible 和 TextFSM (Python) 模板从网络设备中动态提取 LLDP 信息,然后将 LLDP 输出应用于相同的设备接口描述。我目前有一个工作模型但是我需要微调写入接口描述的内容以匹配我们的命名约定(主机名接口),其中主机名不能包含 FQDN,接口应该是接口的前三个字母大小写(在本例中为“eth”)紧跟接口编号 (24)。最终结果看起来像“lab-fr-sw01-eth24”

我可以使用 (\S+) 为模板中的每个变量提取适当的输出:

示例 CLI 输出:Et1 lab-fr-sw01.test.local Ethernet24 120

唯一的问题是,有时开关会像上面一样为“NEIGHBOR”变量提取 FQDN,有时则不会。现在我正在尝试为每个变量编写一个特定的正则表达式(TextFSM 模板仅使用正则表达式)语句。对于邻居变量,我试图将第二个非空白字符匹配到“。” 如果存在。到目前为止,我只能用 (^\S+) 准确地抓取本地接口 (Et1),然后当我尝试只用 ^[^.]+ 抓取主机名时,我还包括本地接口输出“Et1”。为了匹配,我一直在使用https://regex101.com

Et1 lab-fr-sw01.test.local Ethernet24 120

将写入设备接口描述的所需最终结果类似于“lab-fr-sw01-eth24”。但是,因为我们有多个站点,并且每个站点名称都包含在主机名中,所以我不能依赖尝试逐个字母匹配主机名。

0 投票
1 回答
493 浏览

networking - 在 TextFSM 上从末尾匹配字符串

想要从行尾匹配输出到空白

netmgmt@CCC-CC-CCC-RE1> 显示 lldp 邻居本地接口父接口机箱 Id 端口信息系统名称 xe-11/3/0 ae2 00:23:9c:d5:7f:c0 295 BAZ-CPR01-RE1
xe- 10/3/0 ae2 00:23:9c:d5:7f:c0 306 BAZ-CPR01-RE1
xe-8/3/0 ae1 00:23:9c:dd:a7:c0 xe-10/3/0 UKW -CPR02-RE1
xe-9/3/0 ae1 00:23:9c:dd:a7:c0 xe-11/3/0 UKW-CPR02-RE1

我不能使用 left 来字符串正则表达式匹配,因为我可能会在端口信息选项卡中看到空格,所以我试图从头开始匹配。

我相信我在这里使用的 $ 可能与 ${variable} 匹配并导致问题。

我使用了 regex101.com 并且能够使用匹配行中的最后一个单词:((\S+\s+)$)

预期:BAZ-CPR01-RE1 BAZ-CPR01-RE1 UKW-CPR02-RE1 UKW-CPR02-RE1

结果 : []

0 投票
2 回答
454 浏览

python - 使用捕获的值作为行标识符

我需要解析这些原始数据才能处理它:

为此,我正在使用 TextFSM。

我想要这个输出:

我写的第一个模板是这个:

但是,输出不正确:

我在论坛上找到了一个帖子,给出了纯正则表达式的解决方案:TextFSM 逻辑 - 避免两次捕获相同的数据

当我适应我的需要时,我就有了我需要的东西:https ://regex101.com/r/DY0Meb/6

但是,我无法在 TextFSM 模板中翻译它,它失败了。这是我的模板:

关于为什么我没有任何匹配项的任何线索?我是正则表达式的初学者,我似乎找不到解决方案......

非常欢迎任何帮助:)。提前致谢!