我有一个textfsmpython代码,它解析Linux终端中的“ifconfig”命令
import textfsm
f = open('/home/Projects/test_ra/fsm_cli.txt')
inp = f.read()
f.close()
temp = open('/home/Projects/test_ra/fsm_cli.fsm')
tab = textfsm.TextFSM(temp)
res = tab.ParseText(inp)
print tab.header
for row in res:
print row
在fsmcli.txt文件我已经保存了“ifconfig”输出
^{pr2}$我写了fsm模板-fsm_客户机.fsm如下所示
Value Interface (\w+)
Value MAC (\S+)
Value Mask (\S+)
Value MTU (\d+)
Value IP (\S+)
Start
^${Interface}.*HWaddr\s+${MAC}
^\s+inet addr:${IP}.*Mask:${Mask}
^.*MTU:${MTU} -> Record
运行python文件时,我得到以下输出:
['Interface', 'MAC', 'Mask', 'MTU', 'IP']
['eth0', '48:4d:7e:9e:4e:b8', '255.255.255.0', '1500', '172.23.106.239']
['', '', '255.0.0.0', '65536', '127.0.0.1']
['vboxnet0', '0a:00:27:00:00:00', '255.255.255.0', '1500', '192.168.33.1']
我无法解析“lo”接口(您可以在输出的第三行看到空字符串)。我知道原因,因为我在fsm模板中使用了“^${Interface}.*HWaddr\s+${MAC}”。因为“lo”没有Hwaddr,所以不能打印。 但是我如何在fsm模板中编写一个正则表达式来获得接口“lo”的空白HWaddr呢?在
^${Interface}.*(HWaddr\s+${MAC}|环回)
这是我的猜测。创建一个可选的匹配字符串。 放入regex101https://regex101.com/r/lqzfFP/1
相关问题 更多 >
编程相关推荐