for循环只运行一次(python)

2024-10-03 17:24:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解这个逻辑。我需要函数process\u dns\u dump()内的帮助。你知道吗

似乎我只能运行一次代码,它不会遍历每一行。你知道吗

我有一个.txt文档,我想阅读它,然后在同一个“视图”中生成几个关联“SGSN”和“GGSN”的字典。你知道吗

代码如下:

            #!/usr/bin/env python

            def find_between( s, first, last ):
                try:
                    start = s.index( first ) + len( first )
                    end = s.index( last, start )
                    return s[start:end]
                except ValueError:
                    return "ERROR"
            def find_after( s, first):
                try:
                    start = s.index( first ) + len( first )
                    return s[start:]
                except ValueError:
                    return "ERROR"

            def process_dns_dump():
                SGSN = {'10.205.22.244' :'DRJO04 (E//)' , '189.40.240.0/26' : 'DRJO01' , '189.40.242.64/26' : 'DRJO02' , '10.204.13.216' : 'DRJO03 (E//)' ,
                            '189.40.112.0/27' : 'DRJO05_ATCA' , '189.40.115.0/27' : 'DRJO06_ATCA', '189.40.112.192/27' : 'DRJO07_ATCA', '189.40.115.128/26' : 'DRJO08_ATCA' ,
                            '189.40.115.64/26' : 'DRJO09_ATCA', '189.40.112.128/26' : 'DRJO10_ATCA', '189.40.166.0/27' : 'DRCE04_ATCA', '189.40.241.64/27' : 'DBHE01', '10.205.0.244' : 'DBHE02 (E//)',
                            '10.205.16.216' : 'DBLM01 (E//)', '189.40.241.192/26' : 'DBSA01', '10.205.18.216' : 'DBSA02 (E//)', '189.40.242.0/27' : 'DSPO01', '189.40.240.192/27' : 'DSPO02', '10.205.13.216' : 'DSPO03 (E//)',
                            '189.40.114.0/27' : 'DSPO06_ATCA', '189.40.114.192/26' : 'DSPO07_ATCA', '189.40.115.192/26' : 'DSPO08_ATCA', '189.40.114.32/27' : 'DSPO09_ATCA', '189.40.114.64/26' : 'DSPO10_ATCA', 
                            '189.40.114.128/26' : 'DSPO11_ATCA', '189.40.241.128/27' : 'DCTA01', '189.40.167.0/27' : 'DCTA03_ATCA', '10.203.7.244' : 'DSNE02 (E//)', '189.40.113.0/27' : 'DSNE04_ATCA', '10.205.9.216' : 'DRCE03',
                            '189.40.113.192/26' : 'DSNE05_ATCA', '189.40.167.160/27' : 'DMCTA1_Huawei', '189.40.166.160/27' : 'DMBSA1_Huawei', '189.40.166.128/27' : 'DMRCE1_Huawei', 
                            '189.40.166.192/27' : 'DMBHE1_Huawei', '189.40.166.224/27' : 'DMMNS1_Huawei', '189.40.167.128/27' : 'DMBLM1_Huawei', '189.40.167.192/27' : 'DMSDR1_Huawei'}

                GGSN = {'189.40.241.113' : 'GGSPO01', '189.40.240.233' : 'GGSNE01', '189.40.240.115' : 'FISNE01', '189.40.240.116' : 'FISNE02',
                            '189.40.98.65' : 'GPSPO2', '189.40.98.129' : 'GPRJO2', '189.40.241.249' : 'GGRJO02', '189.40.129.17' : 'GGRJO03',
                            '189.40.240.113' : 'FIRJO01', '189.40.112.112' : 'FNGRJO01', '189.40.166.96' : 'FNGRJO02', '189.40.113.112' : 'FNGSNE01',
                            '189.40.167.96' : 'FNGSNE02', '189.40.113.48' : 'FNGSNE03', '189.40.116.112' : 'FNGSNE05', '189.40.116.1' : 'FNGSPO01', '189.40.117.1' : 'FNGRJO03',
                            '189.40.116.129' : 'FNGSPO02', '189.40.116.48' : 'FNGSPO03', '189.40.117.129' : 'FNGRJO04', '189.40.117.33' : 'FNGRJO05', '189.40.117.80' : 'FNGRJO06',
                            '189.40.117.112' : 'FNGRJO07' }

                f = open(files)
                for lines in f:
                    if lines[0:3] == 'acl':
                        lista_SGSN = []
                        lista_GGSN = []
                        lista_IP_SGSN = find_between(lines, '{', ';};')
                        IP_SGSN = lista_IP_SGSN.split(';')
                        VIEW_DNS = str(find_between(lines, 'acl "SG.', '" '))



                        for value in IP_SGSN:
                            sgsn = str(SGSN.get(value))
                            if sgsn != 'None':
                                lista_SGSN.append(sgsn)

                        SGSN_final = find_between(str(lista_SGSN), '[', ']')
                        for linhas in f:
                            if linhas[0:3] == './d':
                                if str(find_between(linhas, 'mcc724.gprs.', ':timbrasil.br')) == VIEW_DNS:
                                    IP_GGSN = find_after(linhas, 'IN A ').replace('\n', '').rstrip()
                                    lista_GGSN.append(GGSN.get(IP_GGSN))
                                    lista_GGSN_unica = set(lista_GGSN)
                                    GGSN_final = str(find_between(str(lista_GGSN_unica),"set(['", "'])"))
                        sgsn_dump = {'VIEW' : VIEW_DNS,
                                     'SGSN' : SGSN_final,
                                     'GGSN' : GGSN_final}
                        print sgsn_dump




            files = 'teste.txt'

            process_dns_dump()

.txt文档是:

            acl "SG.ERS.BNF" {none;};
            acl "SG.ERS.SCO" {none;};
            acl "SG.ERS.SNE" {189.40.240.192/27;189.40.241.192/26;10.205.4.216;189.40.240.128/26;189.40.241.128/27;10.205.13.216;189.40.114.32/27;10.205.22.244;10.205.18.216;};
            acl "SG.ERS.VA" {189.40.167.0/27;189.40.113.0/27;189.40.114.0/27;189.40.114.192/26;189.40.242.0/27;189.40.113.192/26;189.40.115.192/26;189.40.114.64/26;189.40.114.128/26;189.40.167.160/27;189.40.166.160/27;};
            acl "SG.NSN.SCO" {189.40.112.0/27;189.40.166.0/27;189.40.240.0/26;189.40.240.64/27;189.40.112.192/27;189.40.241.64/27;10.205.0.244;10.205.16.216;189.40.241.0/27;189.40.115.128/26;189.40.242.64/26;189.40.115.64/26;189.40.112.128/26;189.40.166.128/27;189.40.166.192/27;189.40.166.224/27;189.40.167.128/27;189.40.167.192/27;189.40.115.0/27;};
            acl "SG.NSN.SNE" {none;};
            acl "SG.NSN.SNE_B" {none;};
            acl "SG.VAS.NORTE" {10.205.9.216;};
            acl "SG.VAS.SUL" {none;};
            ./db.mnc002.mcc724.gprs.ERS.BNF:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc002.mcc724.gprs.ERS.BNF:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.ERS.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc002.mcc724.gprs.ERS.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc002.mcc724.gprs.ERS.SCO:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.ERS.SNE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc002.mcc724.gprs.ERS.SNE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.241.113 
            ./db.mnc002.mcc724.gprs.ERS.SNE:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.ERS.VA:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112 
            ./db.mnc002.mcc724.gprs.ERS.VA:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.167.96 
            ./db.mnc002.mcc724.gprs.ERS.VA:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.116.1 
            ./db.mnc002.mcc724.gprs.ERS.VA:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.116.129 
            ./db.mnc002.mcc724.gprs.ERS.VA:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.LTE.NORTE:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.LTE.SUL:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.NSN.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.129 
            ./db.mnc002.mcc724.gprs.NSN.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.112.112 
            ./db.mnc002.mcc724.gprs.NSN.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.166.96 
            ./db.mnc002.mcc724.gprs.NSN.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc002.mcc724.gprs.NSN.SCO:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc002.mcc724.gprs.NSN.SCO:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.NSN.SNE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc002.mcc724.gprs.NSN.SNE:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.NSN.SNE_B:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc002.mcc724.gprs.NSN.SNE_B:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.116.112 
            ./db.mnc002.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.116.48 
            ./db.mnc002.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.112 
            ./db.mnc002.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.117.80 
            ./db.mnc002.mcc724.gprs.VAS.NORTE:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc002.mcc724.gprs.VAS.SUL:timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc002.mcc724.gprs.VAS.SUL:ipv6timbrasil.br.mnc002.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.ERS.BNF:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc003.mcc724.gprs.ERS.BNF:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.ERS.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc003.mcc724.gprs.ERS.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc003.mcc724.gprs.ERS.SCO:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.ERS.SNE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc003.mcc724.gprs.ERS.SNE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.241.113 
            ./db.mnc003.mcc724.gprs.ERS.SNE:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.ERS.VA:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112 
            ./db.mnc003.mcc724.gprs.ERS.VA:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.167.96 
            ./db.mnc003.mcc724.gprs.ERS.VA:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.116.1 
            ./db.mnc003.mcc724.gprs.ERS.VA:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.116.129 
            ./db.mnc003.mcc724.gprs.ERS.VA:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.LTE.NORTE:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.LTE.SUL:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.NSN.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.129 
            ./db.mnc003.mcc724.gprs.NSN.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.112.112 
            ./db.mnc003.mcc724.gprs.NSN.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.166.96 
            ./db.mnc003.mcc724.gprs.NSN.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc003.mcc724.gprs.NSN.SCO:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc003.mcc724.gprs.NSN.SCO:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.NSN.SNE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc003.mcc724.gprs.NSN.SNE:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.NSN.SNE_B:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc003.mcc724.gprs.NSN.SNE_B:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.116.48 
            ./db.mnc003.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.80 
            ./db.mnc003.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.117.112 
            ./db.mnc003.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.116.112 
            ./db.mnc003.mcc724.gprs.VAS.NORTE:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc003.mcc724.gprs.VAS.SUL:timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc003.mcc724.gprs.VAS.SUL:ipv6timbrasil.br.mnc003.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.ERS.BNF:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc004.mcc724.gprs.ERS.BNF:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.ERS.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc004.mcc724.gprs.ERS.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc004.mcc724.gprs.ERS.SCO:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.ERS.SNE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc004.mcc724.gprs.ERS.SNE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.241.113 
            ./db.mnc004.mcc724.gprs.ERS.SNE:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.ERS.VA:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112 
            ./db.mnc004.mcc724.gprs.ERS.VA:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.167.96 
            ./db.mnc004.mcc724.gprs.ERS.VA:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.116.1 
            ./db.mnc004.mcc724.gprs.ERS.VA:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.116.129 
            ./db.mnc004.mcc724.gprs.ERS.VA:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.LTE.NORTE:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.LTE.SUL:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.NSN.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.129 
            ./db.mnc004.mcc724.gprs.NSN.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.112.112 
            ./db.mnc004.mcc724.gprs.NSN.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.166.96 
            ./db.mnc004.mcc724.gprs.NSN.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.1 
            ./db.mnc004.mcc724.gprs.NSN.SCO:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.33 
            ./db.mnc004.mcc724.gprs.NSN.SCO:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.NSN.SNE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc004.mcc724.gprs.NSN.SNE:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.NSN.SNE_B:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc004.mcc724.gprs.NSN.SNE_B:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.116.48 
            ./db.mnc004.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.80 
            ./db.mnc004.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.117.112 
            ./db.mnc004.mcc724.gprs.VAS.NORTE:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.116.112 
            ./db.mnc004.mcc724.gprs.VAS.NORTE:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112
            ./db.mnc004.mcc724.gprs.VAS.SUL:timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.240.233 
            ./db.mnc004.mcc724.gprs.VAS.SUL:ipv6timbrasil.br.mnc004.mcc724.gprs.        IN A 189.40.113.112

有人能给我一盏灯吗?我正在失去希望。你知道吗

谢谢!你知道吗


Tags: inbrdberssnegprsscovas
2条回答

你在文件上迭代了两次。一旦来到这里:

for lines in f:

一旦到了这里,在那个圈里。你知道吗

for linhas in f:

但是通常你只能在一个文件上迭代一次,然后“文件指针”指向文件的末尾,你就不能提取更多的数据了。你知道吗

一种可能的解决方案是将所有文件一次读入一个字符串列表,然后迭代。列表没有“只能迭代一次”的限制。你知道吗

f = open(files)
line_collection = f.readlines()
for lines in line_collection:
    #...
    for linhas in line_collection:
        #etc

另一种解决方案是使用file.seek(0)将文件指针重置回文件的开头。但是在您的例子中执行起来似乎有点复杂,因为您可能希望在每次执行for linhas in line_collection循环之后查找当前由lines持有的行的末尾,而不是查找文件的第一个字符。你知道吗

作为Kevin suggested,我使用一个字符串列表来迭代它,以满足我的需要。你知道吗

#!/usr/bin/env python

def find_between( s, first, last ):
    try:
        start = s.index( first ) + len( first )
        end = s.index( last, start )
        return s[start:end]
    except ValueError:
        return "ERROR"
def find_after( s, first):
    try:
        start = s.index( first ) + len( first )
        return s[start:]
    except ValueError:
        return "ERROR"

def process_dns_dump():
    SGSN = {'10.205.22.244' :'DRJO04 (E//)' , '189.40.240.0/26' : 'DRJO01' , '189.40.242.64/26' : 'DRJO02' , '10.204.13.216' : 'DRJO03 (E//)' ,
                '189.40.112.0/27' : 'DRJO05_ATCA' , '189.40.115.0/27' : 'DRJO06_ATCA', '189.40.112.192/27' : 'DRJO07_ATCA', '189.40.115.128/26' : 'DRJO08_ATCA' ,
                '189.40.115.64/26' : 'DRJO09_ATCA', '189.40.112.128/26' : 'DRJO10_ATCA', '189.40.166.0/27' : 'DRCE04_ATCA', '189.40.241.64/27' : 'DBHE01', '10.205.0.244' : 'DBHE02 (E//)',
                '10.205.16.216' : 'DBLM01 (E//)', '189.40.241.192/26' : 'DBSA01', '10.205.18.216' : 'DBSA02 (E//)', '189.40.242.0/27' : 'DSPO01', '189.40.240.192/27' : 'DSPO02', '10.205.13.216' : 'DSPO03 (E//)',
                '189.40.114.0/27' : 'DSPO06_ATCA', '189.40.114.192/26' : 'DSPO07_ATCA', '189.40.115.192/26' : 'DSPO08_ATCA', '189.40.114.32/27' : 'DSPO09_ATCA', '189.40.114.64/26' : 'DSPO10_ATCA', 
                '189.40.114.128/26' : 'DSPO11_ATCA', '189.40.241.128/27' : 'DCTA01', '189.40.167.0/27' : 'DCTA03_ATCA', '10.203.7.244' : 'DSNE02 (E//)', '189.40.113.0/27' : 'DSNE04_ATCA', '10.205.9.216' : 'DRCE03',
                '189.40.113.192/26' : 'DSNE05_ATCA', '189.40.167.160/27' : 'DMCTA1_Huawei', '189.40.166.160/27' : 'DMBSA1_Huawei', '189.40.166.128/27' : 'DMRCE1_Huawei', 
                '189.40.166.192/27' : 'DMBHE1_Huawei', '189.40.166.224/27' : 'DMMNS1_Huawei', '189.40.167.128/27' : 'DMBLM1_Huawei', '189.40.167.192/27' : 'DMSDR1_Huawei'}

    GGSN = {'189.40.241.113' : 'GGSPO01', '189.40.240.233' : 'GGSNE01', '189.40.240.115' : 'FISNE01', '189.40.240.116' : 'FISNE02',
                '189.40.98.65' : 'GPSPO2', '189.40.98.129' : 'GPRJO2', '189.40.241.249' : 'GGRJO02', '189.40.129.17' : 'GGRJO03',
                '189.40.240.113' : 'FIRJO01', '189.40.112.112' : 'FNGRJO01', '189.40.166.96' : 'FNGRJO02', '189.40.113.112' : 'FNGSNE01',
                '189.40.167.96' : 'FNGSNE02', '189.40.113.48' : 'FNGSNE03', '189.40.116.112' : 'FNGSNE05', '189.40.116.1' : 'FNGSPO01', '189.40.117.1' : 'FNGRJO03',
                '189.40.116.129' : 'FNGSPO02', '189.40.116.48' : 'FNGSPO03', '189.40.117.129' : 'FNGRJO04', '189.40.117.33' : 'FNGRJO05', '189.40.117.80' : 'FNGRJO06',
                '189.40.117.112' : 'FNGRJO07' }

    f = open(files)
    line_collection = f.readlines()
    for lines in line_collection:
        if lines[0:3] == 'acl':
            lista_SGSN = []
            lista_GGSN = []
            lista_IP_SGSN = find_between(lines, '{', ';};')
            IP_SGSN = lista_IP_SGSN.split(';')
            VIEW_DNS = str(find_between(lines, 'acl "SG.', '" '))



            for value in IP_SGSN:
                sgsn = str(SGSN.get(value))
                if sgsn != 'None':
                    lista_SGSN.append(sgsn)

            SGSN_final = find_between(str(lista_SGSN), '[', ']')
            for linhas in line_collection:
                if linhas[0:3] == './d':
                    if str(find_between(linhas, 'mcc724.gprs.', ':timbrasil.br')) == VIEW_DNS:
                        IP_GGSN = find_after(linhas, 'IN A ').replace('\n', '').rstrip()
                        lista_GGSN.append(GGSN.get(IP_GGSN))
                        lista_GGSN_unica = set(lista_GGSN)
                        GGSN_final = str(find_between(str(lista_GGSN_unica),"set(['", "'])"))
            sgsn_dump = {'VIEW' : VIEW_DNS,
                         'SGSN' : SGSN_final,
                         'GGSN' : GGSN_final}
            print sgsn_dump

files = 'teste.txt'
process_dns_dump()

相关问题 更多 >