携帯キャリア各社のIPアドレス帯域を取ってくるスクリプト
前に作ったやつをsoftbankに対応させてみた。
HTML::Selector::XPath を使ってみたかったのだけど、HTMLが微妙なため挫折。
#!/usr/local/bin/perl use strict; use warnings; use utf8; use Jcode; use LWP::Simple; docomo(); au(); softbank(); willcom(); sub docomo { print "docomo\n"; my $url = 'http://www.nttdocomo.co.jp/service/imode/make/content/ip/about/'; my $content = get($url); while ($content =~ m!<FONT COLOR="\#009900"><B>(.*?)</B></FONT>!g) { print $1, "\n"; } } sub au { print "au\n"; my $url = 'http://www.au.kddi.com/ezfactory/tec/spec/ezsava_ip.html'; my $content = get($url); while ($content =~ m!<td>\s+<div class="TableText">(.*?)</div>\s+</td>\s+<td>\s+<div class="TableText">(.*?)</div>\s+</td>!sg) { my $subnet = jcode($1.$2)->tr('.', '.')->euc; print $subnet, "\n"; } } sub softbank { print "softbank\n"; my $url = 'http://developers.softbankmobile.co.jp/dp/tech_svc/web/ip.php'; my $content = get($url); while ($content =~ m!<FONT size="2" class="j10".*?>(\d+\.\d+\.\d+\.\d+/\d+)</FONT>!g) { print $1, "\n"; } } sub willcom { print "willcom\n"; my $url = 'http://www.willcom-inc.com/ja/service/contents_service/club_air_edge/for_phone/ip/'; my $content = get($url); while ($content =~ m!<font size="2">(\d+\.\d+\.\d+\.\d+/\d+)</font>!g) { print $1, "\n"; } }
出来上がりは以下。
docomo 210.153.84.0/24 210.136.161.0/24 210.153.86.0/24 210.153.87.0/24 203.138.180.0/24 203.138.181.0/24 203.138.203.0/24 61.195.215.8/29 61.195.223.144/28 au 210.169.40.0/24 210.196.3.192/26 210.196.5.192/26 210.230.128.0/24 210.230.141.192/26 210.234.105.32/29 210.234.108.64/26 210.251.1.192/26 210.251.2.0/27 211.5.1.0/24 211.5.2.128/25 211.5.7.0/24 218.222.1.0/24 61.117.0.0/24 61.117.1.0/24 61.117.2.0/26 61.202.3.0/24 219.108.158.0/26 219.125.148.0/24 222.5.63.0/24 222.7.56.0/24 222.5.62.128/25 222.7.57.0/24 59.135.38.128/25 softbank 202.179.204.0/24 210.146.7.192/26 210.146.60.192/26 210.151.9.128/26 210.169.176.0/24 210.175.1.128/25 210.228.189.0/24 211.8.159.128/25 willcom 61.198.142.0/24 219.108.14.0/24 61.198.161.0/24 219.108.0.0/24 61.198.249.0/24 219.108.1.0/24 61.198.250.0/24 219.108.2.0/24 61.198.253.0/24 219.108.3.0/24 61.198.254.0/24 219.108.4.0/24 61.198.255.0/24 219.108.5.0/24 61.204.3.0/25 219.108.6.0/24 61.204.4.0/24 221.119.0.0/24 61.204.6.0/25 221.119.1.0/24 125.28.4.0/24 221.119.2.0/24 125.28.5.0/24 221.119.3.0/24 125.28.6.0/24 221.119.4.0/24 125.28.7.0/24 221.119.5.0/24 125.28.8.0/24 221.119.6.0/24 211.18.235.0/24 221.119.7.0/24 211.18.238.0/24 221.119.8.0/24 211.18.239.0/24 221.119.9.0/24 125.28.11.0/24 125.28.13.0/24 125.28.12.0/24 125.28.14.0/24 125.28.2.0/24 125.28.3.0/24 211.18.232.0/24 211.18.233.0/24 211.18.236.0/24 211.18.237.0/24 125.28.0.0/24 125.28.1.0/24 61.204.0.0/24 210.168.246.0/24 210.168.247.0/24 219.108.7.0/24 61.198.163.0/24 219.108.15.0/24 61.204.2.0/24 61.204.5.0/24 61.198.129.0/24 61.198.130.0/24 61.198.140.0/24 61.198.141.0/24 125.28.15.0/24
HTML変わったら使えませんが、ご自由にどうぞ。
本当はcronでACLを更新とかやりたいよなぁ・・・
追記
id:tokuhiromさんが以下でモジュール化されてます。
http://d.hatena.ne.jp/tokuhirom/20061011/1160536475
インターフェースが思いつかずにあたためてましたが、いい感じですね。
追記2
CPANにアップされたようです。