●ipgrep.plとは?
ipgrep.plとは、指定したIPv4アドレスが含まれるIP/CIDRの行を抽出するスクリプトです。
たとえば、192.168.0.17は192.168.0.0/23の一部ですが、FirewallやL3SWのアクセス制御リスト(ACL)のような複数のIP CIDRが羅列されている中で、一体どこの行に192.168.0.17は含まれるのか、そもそも含まれていないのかを探すのは結構大変です。
そんな時にこのipgrep.plを使用すると、192.168.0.17が含まれるIP/CIDRを一発で探し当てることができます。
もともとは、私がFiwarellログの突き合わせ用に作成した作業用スクリプトの配布です。
●制限事項
下記のような制限事項があります。ご了承ください。
- IPv4のみ対応します。
- サブネットマスクはビット数のみ対応します。
192.168.0.0/24 #OK 対応する。
192.168.0.0./255.255.255.255 #NG 対応しない
●スクリーンショット(コンソールログ
申し訳ありませんが、スクリプト本体やコンソールログを見てどんなプログラムかわからない方には使用する必要は無いと思われます。※はコメントです。色はPuTTY風味のため、ご使用の環境によって異なります。
Fig.1 コンソール画面
[yuaiho@localhost ipgrep]$ ls -l
total 16
-rw-r--r-- 1 yuaiho yuaiho 106 Aug 26 23:12 PrivateIP-ClassA
-rw-r--r-- 1 yuaiho yuaiho 62 Aug 26 23:14 PrivateIP-ClassB
-rw-r--r-- 1 yuaiho yuaiho 116 Aug 26 23:17 PrivateIP-ClassC
-rwxr-xr-x 1 yuaiho wheel 2768 Aug 26 23:05 ipgrep.pl
[yuaiho@localhost ipgrep]$ cat PrivateIP-ClassA
## Tokyo WAN
10.0.0.0/24
## Nagoya WAN
10.1.0.0/16
## Osaka WAN
10.2.0.0/16
## Okinawa WAN
10.72.0.0/18
[yuaiho@localhost ipgrep]$ cat PrivateIP-ClassB
## Printer Network
172.16.0.0/15
## NAS Network
172.18.0.0/16
[yuaiho@localhost ipgrep]$ cat PrivateIP-ClassC
## L3SW Management Network
192.168.0.0/24
## IP-SAN
192.168.10.0/24
## Instruments network segment
192.168.100.0/24
[yuaiho@localhost ipgrep]$ ./ipgrep.pl 192.168.10.5 PrivateIP-Class*
## IP-SAN
192.168.10.5 at 192.168.10.0/24 in file "PrivateIP-ClassC"
※./ipgrep.pl <検索対象IPAddress> <検索対象ファイル名>
で使用します。検索対象はワイルドカードが使えます。
※リストにヒットすると、
最後にヒットした#で始まるコメント
<検索対象IPAddress> at <ヒットしたCIDR> in file "<それが存在するファイル>"
[yuaiho@localhost ipgrep]$ ./ipgrep.pl 10.3.1.7 PrivateIP-Class*
[yuaiho@localhost ipgrep]$ ./ipgrep.pl 10.0.58.254 PrivateIP-Class*
[yuaiho@localhost ipgrep]$ ./ipgrep.pl 10.1.14.254 PrivateIP-Class*
## Nagoya WAN
10.1.14.254 at 10.1.0.0/16 in file "PrivateIP-ClassA"
※IPやファイル内のコメントは架空のものです。
|
- メモ1
マッチするものすべてにヒットします。
たとえば192.168.1.1は192.168.1.1/32、192.168.1.0/24、192.168.0.0/16、192.128.0.0/9のいずれにも含まれますが、このプログラムはそのすべてを出力します。
- メモ2
行頭が#で始まるものをコメントとして認識し、それ以外をIPアドレスとして認識する手抜き仕様なのでご注意下さい。
●免責事項・注意(警告)
- 利用は無償です。
- 動作や再配布は利用者または再配布者の自己責任となります。
- 意図的な有害コードは含んでおりませんが、動作についての責任は負いません。
- またサポートやバージョンアップの義務を負いません。
●ダウンロード
ダウンロード後に拡張子(pl.txt)を任意の拡張子に変更してください。
cronで動かす場合は環境変数を整えるか、面倒であればperlへのパスを直指定して下さい。「/usr/bin/perl」か「/usr/local/bin/perl」です。
Version 1.0 2019.05.30:ダウンロード
このプログラムは事前/事後の承諾や報告無く再配布して頂いても問題ありません。