当前位置: 首页>>代码示例>>Python>>正文


Python CiscoConfParse.find_objects_w_parents方法代码示例

本文整理汇总了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
开发者ID:gleydsonm,项目名称:pynet_ex,代码行数:13,代码来源:Exercise10.py

示例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']):
#.........这里部分代码省略.........
开发者ID:rogerscuall,项目名称:ACE2LTM,代码行数:103,代码来源:ace_parser.py


注:本文中的ciscoconfparse.CiscoConfParse.find_objects_w_parents方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。