<p>作为<a href="https://stackoverflow.com/a/30668476">Kevin suggested</a>,我使用一个字符串列表来迭代它,以满足我的需要。你知道吗</p>
<pre><code>#!/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()
</code></pre>