-1
私はリストを作成する設定ファイルの解析に助けを借りることができました。設定ファイル(下記参照)から。私は設定ファイルを読んで、インターフェイスの詳細を一覧表示するために自分のスクリプトを取得しようとしています。ネットワークエンジニア向けPython - ルータ設定の解析
PE1-Loopback0-1.1.1.1 255.255.255.255
PE1-GigabitEthernet1.10-205.1.1.1 255.255.255.0
PE1-GigabitEthernet1.999-10.10.1.1 255.255.255.0
PE2-Loopback0-2.2.2.2 255.255.255.255
PE2-GigabitEthernet1.10-205.1.1.2 255.255.255.0
PE2-GigabitEthernet1.999-10.10.1.2 255.255.255.0
私のスクリプトは次のようになります。私は私の出力は次のようになり、なぜ知っていると思う
PE1-Loopback0-1.1.1.1 255.255.255.255
PE1-GigabitEthernet1.10-205.1.1.1 255.255.255.0
PE1-GigabitEthernet1.999-10.10.1.1 255.255.255.0
PE1-Loopback0-2.2.2.2 255.255.255.255
PE1-GigabitEthernet1.10-205.1.1.2 255.255.255.0
PE1-GigabitEthernet1.999-10.10.1.2 255.255.255.0
:MYスクリプトから
import random, re, pprint
from collections import defaultdict
routerconfig = open('C:/Users/adrian/workspace/Learning Python/configfile.txt', 'r')
for line1 in iter(routerconfig): #for loop 1. Pulls out host name
HostNameRGX = re.search(r'hostname .*', line1)
if HostNameRGX:
HostNameGRP = HostNameRGX.group()
HostName = (HostNameGRP[9:])
for line2 in iter(routerconfig): #for loop 2. finds interface details
IPAddressRGX = re.search(r'[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*.*255\.255.*',line2)
InterfaceRGX = re.search(r'Loop.*|Giga.*',line2)
if InterfaceRGX:
Interface=InterfaceRGX.group()
if IPAddressRGX:
IPAddress = IPAddressRGX.group()
InterfacePair = (Interface + '-' + IPAddress)
print(HostName + '-' + InterfacePair)
routerconfig.close()
OUTPUT。最初のforループ(forループ1)はホスト名の正規表現を実行し、2番目のforループ(forループ2)に続きます。それは私の問題があると思うところです。最初のループがPE1を報告し続けている間、2番目のループは、私の正規表現のパラメータの下で設定ファイルを解析し続けます。別のホスト名のエントリが見えるときに2番目のループを終了したいので、私のスクリプトはPE1とは別にPE2のインターフェースの詳細の設定を解析できます。
結果は次のようになります。
PE1-Loopback0-1.1.1.1 255.255.255.255
PE1-GigabitEthernet1.10-205.1.1.1 255.255.255.0
PE1-GigabitEthernet1.999-10.10.1.1 255.255.255.0
PE2-Loopback0-2.2.2.2 255.255.255.255
PE2-GigabitEthernet1.10-205.1.1.2 255.255.255.0
PE2-GigabitEthernet1.999-10.10.1.2 255.255.255.0
設定ファイル:
hostname PE1
!
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Tunnel999
ip unnumbered Loopback0
mpls ip
mpls label protocol ldp
tunnel mode mpls traffic-eng
tunnel destination 2.2.2.2
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng path-option 10 dynamic
tunnel mpls traffic-eng path-selection metric te
tunnel mpls traffic-eng name PE1-TO-PE2
!
interface GigabitEthernet1
no ip address
negotiation auto
ip rsvp bandwidth
!
interface GigabitEthernet1.10
encapsulation dot1Q 10
ip address 205.1.1.1 255.255.255.0
mpls ip
mpls label protocol ldp
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 100
ip rsvp bandwidth 99
!
interface GigabitEthernet1.999
encapsulation dot1Q 999
ip address 10.10.1.1 255.255.255.0
!
hostname PE2
!
!
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Tunnel999
ip unnumbered Loopback0
mpls ip
mpls label protocol ldp
tunnel mode mpls traffic-eng
tunnel destination 2.2.2.2
tunnel mpls traffic-eng autoroute announce
tunnel mpls traffic-eng path-option 10 dynamic
tunnel mpls traffic-eng path-selection metric te
tunnel mpls traffic-eng name PE1-TO-PE2
!
interface GigabitEthernet1
no ip address
negotiation auto
ip rsvp bandwidth
!
interface GigabitEthernet1.10
encapsulation dot1Q 10
ip address 205.1.1.2 255.255.255.0
mpls ip
mpls label protocol ldp
mpls traffic-eng tunnels
mpls traffic-eng administrative-weight 100
ip rsvp bandwidth 99
!
interface GigabitEthernet1.999
encapsulation dot1Q 999
ip address 10.10.1.2 255.255.255.0
は、これまで任意のコードをお持ちですか? –
@ cricket_007、 コードの推奨事項はありません。私はまだ自分自身で(失敗して)作業しようとしています。 – adrian
予想される出力を表示するために編集していることは素晴らしいことですが、コードを書くつもりはありません。あなたはその部分にいくつかの試みをし、あなたのために働いていないものを説明する必要があります。詳細については、[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を参照してください。 –