查看: 115|回复: 1

net_inspect+textfsm提取华为USG防火墙地址信息(下)

[复制链接]

3

主题

7

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2022-12-21 18:39:42 | 显示全部楼层 |阅读模式
接上篇:

这次我写了一个稍微复杂的textfsm模板(模板里有filldown、required、list),利用net_inspect提取华为USG防火墙地址对象信息,只是扩展net_inspect的实际应用场景,希望可以激发大家对net_inspect和textfsm的兴趣,再次感谢 @Elin 大神的付出!
相关参考:

[1]
net_inspect项目源码--by知乎“Elin”大神
[2]
《网络工程师的Python之路》奕心老师教程
[3]
【网工手艺】专栏-朱嘉盛python网络运维自动化零基础入门及进阶
<hr/>用到的文件

华为USG防火墙回显内容(截取部分,且脱敏处理)

[USG]display version
Huawei Versatile Routing Platform Software
[USG]disp ip address-s type object
Object address-set maximum number(s): 30000
Object address-set total number(s): 1319
Object address-set item total number(s): 2106
Object address-set reference total number(s): 1330
Address-set: 开挂的史莱克7怪
Type: object
Item number(s): 7
Reference number(s): 1
Item(s):
address 0 1.1.1.1 mask 32
address 1 2.2.2.2 mask 32
address 2 3.3.3.3 mask 32
address 3 4.4.4.4 mask 32
address 4 5.5.5.5 mask 32
address 5 6.6.6.6 mask 32
address 6 7.7.7.7 mask 32
Address-set: 武魂殿7大供奉
Type: object
Item number(s): 1
Reference number(s): 1
Item(s):
address 0 range 10.10.10.1 10.10.10.7
Address-set: 编不下去了
Type: object
Item number(s): 1
Reference number(s): 1
Item(s):
address 0 10.10.10.192 mask 255.255.255.224“huawei_vrp_display_ip_address-set_type_object.textfsm”模板内容

Value Filldown Obj_Name (\s*\S+\s*\S*)
Value Required Obj_Nums (\d+)
Value List Obj_Items (\S+\s*\S+\s*\S*)

Start
  ^Address-set: -> Continue.Record
  ^Address-set: ${Obj_Name}
  ^Item number\(s\): ${Obj_Nums}
  ^\s+address \d+\s*(range)* ${Obj_Items}index文件内容

请看上篇代码

from net_inspect import NetInspect
import pandas as pd

net = NetInspect()
net.set_plugins(input_plugin='console')
net.set_external_templates(r'D:\Py_exec\local_templates')  # 调用本地模板库
net.run(path=r'D:\Py_exec\logs')

print('total devices:', len(net.cluster.devices))

for device in net.cluster.devices:
    info = device.info
    print(info.hostname)
    with device.search_cmd('display ip address-set type object') as cmd:
        df = cmd.parse_result

aaa = pd.DataFrame(df)
aaa.to_csv("objects.csv", index=False)
print("请检查生成的csv文件!")

aaa.to_excel('objects.xlsx')
print("请用WPS或Office打开生成的xlsx文件!")请注意:net-inspect作者还在陆续更新版本,如果新版本碰到类似下面的报错,按照提示修改代码参数即可:
net.run(input_path=r'D:\Py_exec\logs')
NetInspect.run: `path`参数已废弃, 请使用`input_path`参数代替.执行代码后的输出

csv文件

obj_name,obj_nums,obj_items
开挂的史莱克7怪,7,"['1.1.1.1 mask 32', '2.2.2.2 mask 32', '3.3.3.3 mask 32', '4.4.4.4 mask 32', '5.5.5.5 mask 32', '6.6.6.6 mask 32', '7.7.7.7 mask 32']"
武魂殿7大供奉,1,['10.10.10.1 10.10.10.7']
编不下去了,1,['10.10.10.192 mask 255.255.255.224']excel文件

obj_nameobj_numsobj_items
0开挂的史莱克7怪7['1.1.1.1 mask 32', '2.2.2.2 mask 32', '3.3.3.3 mask 32', '4.4.4.4 mask  32', '5.5.5.5 mask 32', '6.6.6.6 mask 32', '7.7.7.7 mask 32']
1武魂殿7大供奉1['10.10.10.1 10.10.10.7']
2编不下去了1['10.10.10.192 mask 255.255.255.224']
回复

使用道具 举报

2

主题

11

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 昨天 06:53 | 显示全部楼层
边撸边过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表