2017-07-18 5 views
-1

インターフェイスのIPアドレスを抽出し、そのアドレスの第3オクテットをBGP AS番号の一部として使用しています。私は第三オクテット= その後、BGP AS = 111文字を挿入するCisco IOS EEM Script

ここでは私の現在と未完成のアプレットである場合には、3番目のオクテットは、例えばであれば番号の前に0を挿入する必要があります。

event manager applet replace 
event none 
action 1.0 cli command "conf t" 
action 1.1 cli command "do show ip int brief vlan 1" 
action 1.2 regexp " [0-9.]+ " $_cli_result ip match 
action 2.0 regexp {([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)} $_cli_result match ip 
action 2.1 regexp {([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)} $ip match first second third forth 
action 2.2 set vl1 $first.$second.$third.$forth 
action 2.3 cli command "router bpg 111$third" 

答えて

1

最も簡単な方法は、formatを正しい書式設定順序で使用することです。 (あなたがCでsprintf()を使用している場合、あなたはformatコマンドがまっすぐオフ何をするかを理解しましょう。Tclコマンドを除いてバッファオーバーランまたはそのような他のトリッキーなビットで何の問題もありません。)

# Rest of your script unchanged; I'm lazy so I'll not repeat it here 
set bpg [format "652%02d" $third] 
action 2.3 cli command "router bpg $bpg" 

%02dは、ゼロパッド(0)フィールドの幅が2(2)の10進数(d)の書式設定(%)です。そして文字通り652があります(%はありません)。

あなたが望むなら、上記を1行にすることができますが、2つ書きする方がはるかにはっきりしていると思います(あまり明確でないコードを書いても良い言い訳はありません。最初に明確に書くのに時間がかからない):

action 2.3 cli command "router bpg [format 652%02d $third]"