本文整理汇总了Python中ciscoconfparse.CiscoConfParse.find_objects_w_parents方法的典型用法代码示例。如果您正苦于以下问题:Python CiscoConfParse.find_objects_w_parents方法的具体用法?Python CiscoConfParse.find_objects_w_parents怎么用?Python CiscoConfParse.find_objects_w_parents使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ciscoconfparse.CiscoConfParse
的用法示例。
在下文中一共展示了CiscoConfParse.find_objects_w_parents方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: main
# 需要导入模块: from ciscoconfparse import CiscoConfParse [as 别名]
# 或者: from ciscoconfparse.CiscoConfParse import find_objects_w_parents [as 别名]
def main():
'''
Main Function
'''
my_cisco_cfg = CiscoConfParse("cisco_ipsec.txt")
out = my_cisco_cfg.find_objects_wo_child(parentspec=r"^crypto map CRYPTO", childspec=r"set transform-set AES-SHA")
for item in out:
print item.text
out2 = my_cisco_cfg.find_objects_w_parents(parentspec=str(item.text), childspec=r"set transform-set")
for item2 in out2:
print item2.text
示例2: __init__
# 需要导入模块: from ciscoconfparse import CiscoConfParse [as 别名]
# 或者: from ciscoconfparse.CiscoConfParse import find_objects_w_parents [as 别名]
class ACE:
def __init__(self, file):
"""
:param file:
:self.rservers: a dictionary with key name of the RealServer and value IP_address
:self.serverfarm: a dictionary with key name of the ServerFarm nested inside another dictionary with two keys,
the value of the key nodes is a list , each element of that list a dictionary with the keys: name and port of
the rserver.
The second key inside ServerFarm is probe.
{ServerFarm:{node:[{name: rserver, port: port], probe: probe_name}, ...}
:self.probes: is a dictionary with key as name of the probe, in each key there is another dictionary with
protocol and port information.
{probe_name:{protocol: tcp, port: port}, ...}
"""
self.parser = CiscoConfParse(file)
self.rservers = {}
self.serverfarm = {}
self.probes = {}
self.virtual_server = {}
def set_rservers(self):
list_rserver = self.parser.find_objects(r'^rserver host')
for i in list_rserver:
rserver = i.re_search_children('ip address')
name_rserver = i.text.split(' ')[-1]
if not rserver:
print("The Real Server {} don't have any IP".format(name_rserver))
# is a list of only one element always
rserver = rserver[0].text
ip_rserver = rserver.split(' ')[-1]
self.rservers[name_rserver] = ip_rserver
def find_probe(self, probe_name):
probe = self.parser.find_objects('^probe tcp' + " " + probe_name)
probe = probe[0]
probe_protocol = probe.text.split(' ')[-2]
probe_name = probe.text.split(' ')[-1]
probe_port = probe.re_search_children('port')
probe_port = probe_port[0].text.split(' ')[-1]
probe_dict = {'name': probe_name, 'protocol': probe_protocol, 'port': probe_port}
return probe_dict
def set_serverfarm(self):
list_serverfarm = self.parser.find_objects(r'serverfarm host')
for i in list_serverfarm:
serverfarm_name = i.text.split(' ')[-1]
probe = i.re_search_children('probe')
# is a list of only one element always
probe_name = probe[0].text.split(' ')[-1]
probe = self.find_probe(probe_name)
try:
self.set_probes(probe)
except IndexError as e:
print('The probe {} was already added'.format(e[0]))
list_rservers = i.re_search_children('rserver')
temp_list = []
for ii in list_rservers:
rserver = {'name': (ii.text.split(' ')[-2]), 'port': (ii.text.split(' ')[-1])}
temp_list.append(rserver)
self.serverfarm[serverfarm_name] = {}
self.serverfarm[serverfarm_name]['nodes'] = temp_list
self.serverfarm[serverfarm_name]['probe'] = probe_name
def set_virtual_server(self):
list_virtual_server = self.parser.find_objects(r'class-map match-all')
for i in list_virtual_server:
virtual_server_name = i.text.split(' ')[-1]
virtual_address = i.re_search_children(r'2 match virtual-address')
# is a list of only one element always
virtual_address = virtual_address[0].text
virtual_address_port = virtual_address.split(' ')[-1]
virtual_address_protocol = virtual_address.split(' ')[-3]
virtual_address_ip = virtual_address.split(' ')[-4]
parentspec = '^class ' + virtual_server_name + '$'
policy = self.parser.find_objects_w_parents(parentspec=parentspec,
childspec='loadbalance policy')
# is a list of only one element always
try:
policy = policy[0].text
policy_name = policy.split(' ')[-1]
parentspec = 'policy-map type loadbalance first-match ' + policy_name + '$'
serverfarm = self.parser.find_objects_w_parents(parentspec=parentspec,
childspec='serverfarm ')
# is a list of only one element always
serverfarm = serverfarm[0].text
serverfarm_name = serverfarm.split(' ')[-1]
self.virtual_server[virtual_server_name] = {'pool': serverfarm_name, 'ip': virtual_address_ip,
'port': virtual_address_port,
'protocol': virtual_address_protocol}
except IndexError:
print 'The policy-map type loadbalance with name {} was not found'.format(policy_name)
def set_probes(self, probe):
"""
:param probe: is a dictionary with format {'name': probe_name, 'protocol': probe_protocol, 'port': probe_port}
:return: an Exception with two arguments is return if the probe already exist, first argument is the name of the
probe and the second is an explanation string. If the value does not exist its added updating self.probes.
"""
if self.probes.get(probe['name']):
#.........这里部分代码省略.........