Python 如何在Cisco ASA中查找ip地址所属的对象组

Python 如何在Cisco ASA中查找ip地址所属的对象组,python,Python,我的任务是确定Cisco ASA上对象组中IP的使用情况。我正在用python编写代码。该配置具有以下功能 object-group network VIPUSERS description VIPUSER Addresses network-object host 192.168.0.10 network-object host 192.168.0.11 ! object-group network USERS description USER Addresses network-object

我的任务是确定Cisco ASA上对象组中IP的使用情况。我正在用python编写代码。该配置具有以下功能

object-group network VIPUSERS
description VIPUSER Addresses
network-object host 192.168.0.10
network-object host 192.168.0.11
!
object-group network USERS
description USER Addresses
network-object host 192.168.0.10
network-object host 192.168.0.11
network-object host 192.168.0.12
network-object host 192.168.0.13
network-object host 192.168.0.14
network-object host 192.168.0.15
!
object-group network SERVERS
description SERVER addresses
network-object host 192.168.100.10
network-object host 192.168.100.11
network-object host 192.168.100.12
network-object host 192.168.100.13
network-object host 192.168.100.14
network-object host 192.168.100.15
!
object-group service USER-SERVER-PORTS
service-object icmp echo
service-object icmp echo-reply
service-object tcp eq 21
service-object tcp eq 25
service-object tcp eq 80
service-object tcp eq 443
该脚本接受输入192.168.0.11。输出应该是

object-group network VIPUSERS
object-group network USERS
我可以搜索上述输入,但无法回溯并获取它所属的组。到目前为止,我只提出了一个逻辑来保存一个值为“objectgroupnetwork”的变量,并解析下一行,直到得到所需的输入值。找到后,打印变量

最简单的方法是什么

最简单的方法是什么

让电脑来做。正则表达式,用于描述以
对象组开始,以
结束的每个部分。(注意,我在你的课文末尾加了一个!以使所有部分符合相同的模式)

捕获“对象组”行上的最后一个单词,以及以下所有行,直到

然后检查内容行是否有IP,如果有,打印组名

s = '''
object-group network VIPUSERS
description VIPUSER Addresses
network-object host 192.168.0.10
network-object host 192.168.0.11
!
object-group network USERS
description USER Addresses
network-object host 192.168.0.10
network-object host 192.168.0.11
network-object host 192.168.0.12
network-object host 192.168.0.13
network-object host 192.168.0.14
network-object host 192.168.0.15
!
object-group network SERVERS
description SERVER addresses
network-object host 192.168.100.10
network-object host 192.168.100.11
network-object host 192.168.100.12
network-object host 192.168.100.13
network-object host 192.168.100.14
network-object host 192.168.100.15
!
'''

import re

for m in re.finditer(r'object-group \w+ (\w+)\r?\n([^!]+)!?', s):
  group, content = m.groups()
  if '192.168.0.10' in content:
    print(group)