ふと、ネットワークアドレスとCIDRを指定して対象範囲で利用できるIPアドレスの一覧を取得する楽な方法ないかなー、と思って調べて見たところ、『prips』コマンドというものがあるようなので備忘として残しておく。 UbuntuやMacであれば、以下のコマンドでインストールできる。
sudo apt install prips # Ubuntuの場合
sudo brew install prips # Mac OS Xの場合
インストールできたら、以下のようにコマンドを実行することで指定レンジのIPアドレスの一覧を取得できる(ネットワークアドレスとブロードキャストアドレスも含むけど)。
prips ネットワークアドレス/CIDR
blacknon@BS-PUB-UBUNTU-01:~$ prips 172.16.16.0/30
172.16.16.0
172.16.16.1
172.16.16.2
172.16.16.3
blacknon@BS-PUB-UBUNTU-01:~$
blacknon@BS-PUB-UBUNTU-01:~$ prips 172.16.16.0/22 | wc -l
1024
ここで得られた結果を利用して、例えば指定したセグメントのIPアドレスのみをgrepするような場合、以下のようにしてやると簡単に実現できる。
grep -f <(prips ネットワークアドレス/CIDR)
blacknon@BS-PUB-UBUNTU-01:~$ echo -e "172.16.16.222\n192.168.0.2"
172.16.16.222
192.168.0.2
blacknon@BS-PUB-UBUNTU-01:~$ echo -e "172.16.16.222\n192.168.0.2" | grep -f <(prips 172.16.16.0/22)
172.16.16.222