シェルで、Rubyを利用して、IPアドレスを簡単に扱う方法を紹介する。
入力:192.168.123.45/24
ipaddress='192.168.123.45' mask='24' echo "${ipaddress}/${mask}" echo # network network=$( ruby -ripaddr -e "puts IPAddr.new(\"${ipaddress}/${mask}\")" ) echo "Network" echo $network # netmask netmask=$( ruby -ripaddr -e "puts IPAddr.new('255.255.255.255/32').mask(${mask}.to_i)" ) echo "Netmask" echo $netmask # range range_f=$( ruby -ripaddr -e "puts IPAddr.new(\"${ipaddress}/${mask}\").to_range.first.succ" ) echo "First" echo $range_f # 最終はpredが実装されていないため、スキップ # broadcast broadcast=$( ruby -ripaddr -e "puts IPAddr.new(\"${ipaddress}/${mask}\").to_range.last" ) echo "Broadcast" echo $broadcast
実行結果
sh app.sh 192.168.123.45/24 Network 192.168.123.0 Netmask 255.255.255.0 First 192.168.123.1 Broadcast 192.168.123.255
DHCPなど、IPアドレスが絡む設定ファイルの作成に便利かもしれない。