手当たり次第に書くんだ

飽きっぽいのは本能

Cisco 設定変更用コンフィグに正規表現を活用

Cisco 機器の設定は、基本的にコマンドラインで行うことができ、それは非常に洗練されています。コンフィグファイル自体がコマンドそのものの集合となっており、設定の復元もコンフィグファイルをコンソールから転送することで元の状態に戻すことができます。

部分的な設定変更も同様で、まずは想定されるコマンドラインをテキストで作成し、それをコンソールから転送します。その中でよくありがちな設定はスタティックルートやアクセスリストの変更です。Cisco のコマンド体系は、コマンドの行頭に no をつけることで該当の設定を削除しますが、それが大量な場合、結構面倒な作業となります。

例えば 100 行に及ぶスタティックルートを削除する場合、行頭に no をつけてテキストを加工しなければなりません。実際の業務でも、純粋なネットワークエンジニアは黙々と手動で no を挿入していく方が多く見受けられます。純粋なネットワークエンジニアの人は、想像をはるかに超えて Cisco 以外の IT 知識を知らない人がいます。正規表現を使用すれば、このようなテキスト処理は一括で終わりますし、むしろ正確です。Excel 等で加工する方法もありますが、この例であれば正規表現の活用がスマートだと思います。

個人的に、正規表現は、Linux の sed コマンドを使用するのが好きですが、ネットワークエンジニアの業務環境は Windows が多いと思いますので、その場合は、サクラエディタなどの高機能エディタであれば普通に正規表現を利用できると思います。いづれにしても、正規表現の仕組みは共通ですので、どれを使用しても同じです。

削除したいスタティックルートの設定は以下を例とします。

ip route 192.168.0.0 255.255.255.0 10.0.0.200
ip route 192.168.1.0 255.255.255.0 10.0.1.200
ip route 192.168.2.0 255.255.255.0 10.0.2.200
ip route 192.168.3.0 255.255.255.0 10.0.3.200
ip route 192.168.4.0 255.255.255.0 10.0.4.200
ip route 192.168.5.0 255.255.255.0 10.0.5.200
ip route 192.168.6.0 255.255.255.0 10.0.6.200
ip route 192.168.7.0 255.255.255.0 10.0.7.200
ip route 192.168.8.0 255.255.255.0 10.0.8.200
ip route 192.168.9.0 255.255.255.0 10.0.9.200

正規表現では行頭を ^ (メタ文字)で表します。正規表現が利用できるテキストエディタで ^ を対象に no で置き換えると一括で行頭に no が挿入されます。ポイントは、 no の後にスペースをつけて置換することです。スペースが無いと noip がくっついて noip となってしまいます。

参考までに、sed コマンドで行頭に no を挿入するコマンドは以下のとおりです。ファイル名は cisco.txt としています。

sed -i 's/^/no /' cisco.txt
  • sed: ストリームエディタ
  • -i: 入力ファイルを直接編集するオプション
  • s: 置換 (substitute) コマンド
  • ^: 行の先頭を示すメタ文字
  • /: 置換の開始を示すデリミタ
  • no : “no ” という文字列(no の後に半角スペースが含まれています)
  • /: 置換の終了を示すデリミタ
  • cisco.txt: 編集するファイル名

完成したスタティックルート削除用のコンフィグは以下のとおりです。

no ip route 192.168.0.0 255.255.255.0 10.0.0.200
no ip route 192.168.1.0 255.255.255.0 10.0.1.200
no ip route 192.168.2.0 255.255.255.0 10.0.2.200
no ip route 192.168.3.0 255.255.255.0 10.0.3.200
no ip route 192.168.4.0 255.255.255.0 10.0.4.200
no ip route 192.168.5.0 255.255.255.0 10.0.5.200
no ip route 192.168.6.0 255.255.255.0 10.0.6.200
no ip route 192.168.7.0 255.255.255.0 10.0.7.200
no ip route 192.168.8.0 255.255.255.0 10.0.8.200
no ip route 192.168.9.0 255.255.255.0 10.0.9.200

ネットワークエンジニアとはいえ、いつまでも Cisco の勉強ばかりしていてもつまらないですし、その他の IT 知識も柔軟に学ぶとこのようなアイデアも簡単に浮かびます。もちろん、正規表現自体は基本的な概念の一つではあります。

Cisco 設定変更用コンフィグに正規表現を活用

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る