ふと、ネットワークアドレスとCIDRを指定して対象範囲で利用できるIPアドレスの一覧を取得する楽な方法ないかなー、と思って調べて見たところ、『prips』コマンドというものがあるようなので備忘として残しておく。 UbuntuやMacであれば、以下のコマンドでインストールできる。
bash
sudo apt install prips # Ubuntuの場合
sudo brew install prips # Mac OS Xの場合
インストールできたら、以下のようにコマンドを実行することで指定レンジのIPアドレスの一覧を取得できる(ネットワークアドレスとブロードキャストアドレスも含むけど)。
bashprips ネットワークアドレス/CIDR
shellblacknon@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するような場合、以下のようにしてやると簡単に実現できる。
bashgrep -f <(prips ネットワークアドレス/CIDR)
shellblacknon@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