.txt ファイルに保存されている cisco ルーター構成で特定の文字列を検索して一致させようとしています。これは、.txt ファイルの一部の例です。
ip sla 101
udp-jitter 10.0.0.1 48092
request-data-size 64
tos 100
tag hostname
frequency 300
ip sla schedule 101 life forever start-time now
ip sla 102
udp-jitter 10.0.26.36 48092
request-data-size 64
tos 100
owner owner
tag hostname
frequency 300
ip sla schedule 102 life forever start-time now
ip sla 103
udp-jitter 10.0.114.1 48092
tos 100
vrf mskjhhj
owner owner2
tag hostname
ip sla schedule 103 life forever start-time now
したがって、500 の .txt ファイルがあり、すべての構成にさまざまなバリエーションがあると想像してください。
取得して保存したい部分は、各「IP SLA」の下の構成です。たとえば、最初の行は「ip sla 101」であり、その構成全体は次のようになります。
ip sla 101
udp-jitter 10.0.0.1 48092
request-data-size 64
tos 100
tag xb02wepr01-004108
frequency 300
ip sla schedule 101 life forever start-time now
ファイル全体を検索して、「ip sla」のそれぞれの情報を取得できるようにしたいのですが、一部のファイルの構成が異なることを覚えておいてください。唯一同じなのは、ip sla の 1 つが最後に、それがなくなるまで、別の ip sla が続きます。シスコの設定なので、自分で説明するかどうかはわかりません。
これは私のコードです:
f =open('config.txt')
f =f.readlines()
f_out =open('save_result.txt', 'wb')
for i in f:
if 'ip sla <any number>:
ipsla<number>=[]
ipsla<number>.append(i)
ipslacurrent = i
elif i != <any number>:
ipsla<number>.append(i)
f_out.write(ipsla<anynumber>)
f_out.close()
これがすべて理にかなっていることを願っています。これを達成する他の方法があれば、私は感謝します。おそらく正規表現ですが、rgexの経験はありません。ありがとう
アップデート:
私が基本的に欲しいのは、複数の変数です。スクリプトの最後に、次の例のようにスクリプトを収集します。
例:
ip_sla_101 =['udp-jitter 10.0.0.1 48092', 'request-data-size 64','tos 100','tag hostname','frequency 300','ip sla schedule 101 life forever start-time now']
ip_sla_102 =['udp-jitter 10.0.26.36 48092', 'request-data-size 64','tos 100','owner owner', 'tag hostname','frequency 300','ip sla schedule 102 life forever start-time now']
ip_sla_103 =['udp-jitter 10.0.114.1 48092','tos 100','owner owner2', 'tag hostname', 'ip sla schedule 103 life forever start-time now']