IPアドレスからプロバイダーを取得
#! /usr/local/bin/perl # フォームデータ取り込み read(STDIN, $query, $ENV{'CONTENT_LENGTH'}); foreach $pair (split(/&/, $query)) { ($key, $value) = split(/=/, $pair); $value =~ tr/+/ /; $FORM{$key} = $value; } # IPアドレスからホスト名を取得 if($FORM{'addr'}) { $host = gethostbyaddr(pack("C4", split(/\./, $FORM{'addr'})), 2); if($host) { $provider = getProvider($host); #プロバイダー取得 } if(!$provider) { $provider = "不明"; } } # HTML出力 print qq(Content-type: text/html; charset=Shift_JIS\n\n); print <<END; <html> <head> <title>IPアドレスからプロバイダーを取得</title> </head> <body> <center> <form name="form" action="$ENV{'SCRIPT_NAME'}" method="POST"> <h1 style="font-size:18px">IPアドレスからプロバイダーを取得</h1> IPアドレス:<input type="text" name="addr" value="" size="30"> <input type="submit" value="プロバイダー取得"> </form> END if($FORM{'addr'}) { print <<" END"; <big style="padding:3px;border:solid 2px #f33"> プロバイダー: $provider </big><br> END } print <<END; </center> <br><br><br><br><br> <center><a href="/">トップページへ</a></center> </body> </html> END exit; #================================================ プロバイダー取得 sub getProvider { my $host = $_[0]; my ($i); my @provider = ( ['BIGLOBE', 'mesh.ad.jp' ], ['OCN', 'ocn.ne.jp' ], ['Yahoo!BB', 'bbtec.net' ], ['nifty', 'infoweb.ne.jp' ], ['So-net', 'so-net.ne.jp' ], ['ぷらら', 'plala.or.jp' ], ['au one', 'dion.ne.jp' ], ['BB.excite', 'bbexcite.jp' ], ['eonet', 'eonet.ne.jp' ], ['UCOM', 'ucom.ne.jp' ], ['ASAHIネット', 'asahi-net.or.jp' ] ); for($i = 0 ; $i < @provider ; $i++) { if($host =~ /\.$provider[$i][1]$/) { return $provider[$i][0]; } } return 0; }
〔 実行する 〕