正規表現は、設定グループを幅広く適用可能にするために設定グループで使用されます。Portable Operating System Interface for UNIX(POSIX)1003.2 正規表現は、構成ステートメントの名前でサポートされています。正規表現を区切るには、単一引用符を使用する必要があります。
(注) |
すべての POSIX 正規表現がサポートされているわけではありません。
|
インターフェイス識別子の正規表現
設定グループは、正確なインターフェイス識別子を受け入れません。設定グループに適用可能なインターフェイスのグループを識別するには、正規表現を使用する必要があります。正規表現 ‘.*’ は使用できません。インターフェイス識別子の正規表現は、一義的な単語で始まり、その後に正規表現を続けなければなりません。たとえば、ギガビット
イーサネット インターフェイスを設定するには、正規表現 'GigabitEthernet.*' を使用します。
ルータ設定で使用可能なインターフェイス タイプのリストを表示するには、設定グループ プロンプトで interface ? と入力します。
RP/0/RP0/cpu 0: router(config-GRP)# interface ?
ATM 'RegExp': ATM Network Interface(s)
BVI 'RegExp': Bridge-Group Virtual Interface
Bundle-Ether 'RegExp': Aggregated Ethernet interface(s)
GigabitEthernet 'RegExp': GigabitEthernet/IEEE 802.3 interface(s)
IMA 'RegExp': ATM Network Interface(s)
Loopback 'RegExp': Loopback interface(s)
MgmtEth 'RegExp': Ethernet/IEEE 802.3 interface(s)
Multilink 'RegExp': Multilink network interface(s)
Null 'RegExp': Null interface
PW-Ether 'RegExp': PWHE Ethernet Interface
PW-IW 'RegExp': PWHE VC11 IP Interworking Interface
Serial 'RegExp': Serial network interface(s)
tunnel-ip 'RegExp': GRE/IPinIP Tunnel Interface(s)
tunnel-mte 'RegExp': MPLS Traffic Engineering P2MP Tunnel interface(s)
tunnel-te 'RegExp': MPLS Traffic Engineering Tunnel interface(s)
tunnel-tp 'RegExp': MPLS Transport Protocol Tunnel interface
(注) |
インターフェイスのタイプを一意なものにするのに十分な文字数のみを入力するよう要求されますが、フレーズ全体を入力することをお勧めします。正規表現で使用されるすべてのインターフェイス タイプでは、大文字と小文字が区別されます。
|
サブインターフェイスを指定するには、式の前に \. という文字を付けます(バックスラッシュ ピリオド)。たとえば、すべてのギガビット イーサネット サブインターフェイスを設定するには、interface 'GigabitEthernet.*\..*'
を使用します。
次の例に示すように、レイヤ 2 トランスポート インターフェイスまたはポイントツーポイント インターフェイスを指定できます。
group g-l2t
interface 'Gi.*\..*' l2transport
.
.
end-group
group g-ptp
interface 'Gi.*\..*' point-to-point
.
.
end-group
OSPF 設定の正規表現
正確なルータ プロセス名と OSPF 領域は使用できません。プロセス名または OSPF 領域のグループを指定するには、正規表現を使用する必要があります。OSFP 領域がスカラー値または IP アドレスのいずれかになるように指定するには、次の例のように正規表現
‘.*’ を使用します。
group g-ospf
router ospf '.*'
area '.*'
mtu-ignore enable
!
!
end-group
OSPF 領域を IP アドレスにする必要があることを指定するには、次の例のように式 '\.' を使用します。
group g-ospf-ipaddress
router ospf '.*\..*\..*\..*'
area '.*'
passive enable
!
!
end-group
OSPF 領域をスカラー値にする必要があることを指定するには、次の例のように式 '1.*' を使用します。
group g-ospf-match-number
router ospf '.*'
area '1.*'
passive enable
!
!
end-group
BGP AS の正規表現
正確な BGP AS 値は、設定グループでは使用できません。形式 X.Y などで AS プレーン形式または AS ドット形式を指定するには正規表現を使用します。AS プレーン形式のインスタンスを照合するには、単純な正規表現を使用します。AS ドット形式のインスタンスを照合するには、次の例に示すように、ドットで区切られた
2 つの正規表現を使用します。
group g-bgp
router bgp '*'.'*'
address-family ipv4 unicast
!
!
end-group
ANCP の正規表現
正確なアクセス ノード制御プロトコル(ANCP)送信者名識別子は設定グループで使用できません。送信者名の引数は IP アドレスまたは MAC アドレスのどちらにでもできるので、正規表現ではどちらが使用されているかを指定する必要があります。IP
アドレスは '.*\..*\..*\..*'
と指定します。MAC アドレスは '.*\..*\..*'
と指定します。
ユニフォーム タイプへの解決
正規表現は、ユニフォーム タイプに解決されなければなりません。次は、不正な正規表現の例です。
group g-invalid
interface ‘.*’
bundle port-priority 10
!
interface ‘.*Ethernet.*’
bundle port-priority 10
!
end-group
この例では、bundle コマンドはインターフェイス タイプ GigabitEthernet ではサポートされていますが、インターフェイス タイプ ‘FastEthernet’ ではサポートされていません。正規表現 ‘.*’ および ‘.*Ethernet.*’ は、GigabitEthernet
タイプと FastEthernet タイプの両方に一致します。bundle コマンドはこれらの両方のインターフェイス タイプには適用できず、ユニフォーム タイプに解決しないので、システムはこの設定を許可しません。
(注) |
システムが正規表現からどの構成をすべきかを判別できない場合、その式は有効であると見なされません。
|
(注) |
インターフェイス識別子の参照時に正規表現 ‘.*’ は使用できません。インターフェイス識別子の正規表現は、一義的な単語で始まり、その後に正規表現を続けなければなりません。詳細については、この項の「インターフェイス識別子の正規表現」を参照してください。
|
重複する正規表現
正規表現は、設定グループ内の構成ステートメントの名前で使用されます。これにより、一致する名前に適用された場合に設定による継承が可能になります。正規表現を区切るには、単一引用符が使用されます。同じ構成に対し設定グループ内の重複する正規表現は許可されません。
以下に示す例は、複数の設定グループを作成して適用するプロセスを示しています。
RP/0//CPU0:router(config)#group FB_flexi_snmp
RP/0//CPU0:router(config-GRP)# snmp-server vrf '.*'
RP/0//CPU0:router(config-GRP-snmp-vrf)# host 1.1.1.1 traps version 2c group_1
RP/0//CPU0:router(config-GRP-snmp-vrf)# host 1.1.1.1 informs version 2c group_1
RP/0//CPU0:router(config-GRP-snmp-vrf)# context group_1
RP/0//CPU0:router(config-GRP-snmp-vrf)#
RP/0//CPU0:router(config-GRP-snmp-vrf)#commit
RP/0//CPU0:router(config-GRP-snmp-vrf)#root
RP/0//CPU0:router(config)#
RP/0//CPU0:router(config)#snmp-server vrf vrf1
RP/0//CPU0:router(config-snmp-vrf)#snmp-server vrf vrf10
RP/0//CPU0:router(config-snmp-vrf)#!
RP/0//CPU0:router(config-snmp-vrf)#snmp-server vrf vrf100
RP/0//CPU0:router(config-snmp-vrf)#
RP/0//CPU0:router(config-snmp-vrf)#commit
RP/0//CPU0:router(config-snmp-vrf)#root
RP/0//CPU0:router(config)#
RP/0//CPU0:router(config)#apply-group FB_flexi_snmp
RP/0//CPU0:router(config)#do sh running-config group
group FB_flexi_snmp
snmp-server vrf '.*'
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
!
end-group
apply-group FB_flexi_snmp
snmp-server vrf vrf1
!
snmp-server vrf vrf10
!
snmp-server vrf vrf100
!
RP/0//CPU0:ios#show running-config inheritance detail
group FB_flexi_snmp
snmp-server vrf '.*'
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
!
end-group
snmp-server vrf vrf1
## Inherited from group FB_flexi_snmp
host 1.1.1.1 traps version 2c group_1
## Inherited from group FB_flexi_snmp
host 1.1.1.1 informs version 2c group_1
## Inherited from group FB_flexi_snmp
context group_1
!
snmp-server vrf vrf10
## Inherited from group FB_flexi_snmp
host 1.1.1.1 traps version 2c group_1
## Inherited from group FB_flexi_snmp
host 1.1.1.1 informs version 2c group_1
## Inherited from group FB_flexi_snmp
context group_1
!
snmp-server vrf vrf100
## Inherited from group FB_flexi_snmp
host 1.1.1.1 traps version 2c group_1
## Inherited from group FB_flexi_snmp
host 1.1.1.1 informs version 2c group_1
## Inherited from group FB_flexi_snmp
context group_1
次の例は、正規表現を示しています。この例では、snmp-server vrf '.*’
および snmp-server vrf '[\w]+
は 2 つの異なる正規表現です。
group FB_flexi_snmp
snmp-server vrf '.*’
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
!
snmp-server vrf '[\w]+’
host 2.2.2.2 traps version 2c group_2
host 2.2.2.2 informs version 2c group_2
context group_2
!
end-group
この個々の正規表現は、次に示すように 3 つの式 snmp-server vrf vrf1
、snmp-server vrf vrf10
および snmp-server vrf vrf100
すべてに結合されます。
apply-group FB_flexi_snmp
snmp-server vrf vrf1
!
snmp-server vrf vrf10
!
snmp-server vrf vrf100
!
設定グループには、正規表現の重複のインスタンスが存在することがあります。このような場合、適用されたときに最も優先順位の高い正規表現がアクティブ化され、継承されます。その正規表現は、最も優先順位の高い辞書式順で最初に来ます。
次の例は、重複する正規表現を使用する方法と、優先順位の高い式がどのように適用されるかを示しています。
group FB_flexi_snmp
snmp-server vrf '.*’
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
!
snmp-server vrf '[\w]+’
host 2.2.2.2 traps version 2c group_2
host 2.2.2.2 informs version 2c group_2
context group_2
!
end-group
次に示す式は最も優先順位が高いです。
group FB_flexi_snmp
snmp-server vrf '.*’
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
上記の例は、2 つの異なる正規表現 snmp-server vrf '.*’
と snmp-server vrf '[\w]+'
を示しています。
次の式は、これら 2 つの式がどのようにマージされるかを示しています。
apply-group FB_flexi_snmp
snmp-server vrf vrf1
!
snmp-server vrf vrf10
!
snmp-server vrf vrf100
!
優先順位の低い正規表現の変更は、継承に影響しません。
優先順位が低い(上位ではない)既存の正規表現に加えられた変更は、継承には影響しません。
snmp-server vrf '[\w]+’
host 2.2.2.2 traps version 2c group_2
host 2.2.2.2 informs version 2c group_2
context group_2
次に示すように、優先順位の高い式が継承されます。
group FB_flexi_snmp
snmp-server vrf '.*’
host 1.1.1.1 traps version 2c group_1
host 1.1.1.1 informs version 2c group_1
context group_1
グループの優先順位継承の適用
優先順位によって継承が制御されます。
(注) |
Cisco IOS XR リリース 6.3.1 以降では、コミット全体に必要なすべてのグループ定義があれば、フレキシブル CLI 設定グループ定義、apply-group および exclude-group コマンドを任意の順序で入力できます。
|
グループの優先順位の継承を適用すると、フレキシブルな設定グループがグループ間の共通の構成ステートメントを処理できるようになります。複数の設定グループに共通の構成ステートメントがある場合、継承の優先順位は、内部グループに存在する構成ステートメントが外部グループに存在する構成ステートメントよりも優先されます。タイブレーカーの場合、優先順位は正規表現の辞書式順序に従って割り当てられます。ユーザが定義したコマンドの順序は受け入れられません。
たとえば、設定グループ ONE の構成ステートメントは、別のグループよりも優先されます。設定グループ SEVEN の構成ステートメントは、他のグループに存在しない場合にのみ使用されます。設定グループ内では、継承の優先順位は最長一致です。
apply-group SIX SEVEN
router ospf 0
apply-group FOUR FIVE
area 0
apply-group THREE
interface TenGigE0/11/0/0
apply-group ONE TWO
!
!
!
上記の例は、2 つのシナリオを示しています。最も内側のグループ(apply-group ONE TWO)が最も優先順位が高くなります。 ケース 1
最初のシナリオは、どのグループが優先順位を得るかを示しています。この例では、どのグループが異なる設定グループ(共通のものがない異なるグループ)間で適用されるかを示しています。グループ 1(ONE TWO)を適用すると、7 つのグループすべてがインターフェイス
interfaceTenGigE0/11/0/0
に一致し、適用されます。
ケース 2
ここで、すべてが同じ(共通の)構成を持つ場合、グループ 1 がアクティブになります。つまり、apply-group ONE TWO
がアクティブになります。グループ 1 が削除されると、グループ 2 がアクティブになります。