sed で携帯の IP アドレスリストを作る

sed だけでほとんどやっつけてみたいということで。
コマンドラインから無理やり携帯の IP アドレスリストを取得してみた。

各社のウェブサイトに curl でアクセスして HTML をいじるので、リニューアルされたら即アウト。
「今のところ取れる」というだけの話。ナマモノのようだ。

DoCoMo

リストになっているところから IP アドレスっぽいのを抜き出した。

curl $DOCOMO_URL | sed -n '/^.*<li>\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]\{1,3\}\)<\/li>.*$/{s//\1/;p}'  > docomo.lst

ezweb

IP アドレスとサブネットマスクで 2 行で書かれていたので、後で N コマンドでくっつけた。
パイプで渡しているのでイマイチかもしれない。

curl $EZWEB_URL | sed -n '/^.*<div.*>\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)<\/div>.*/,/^.*<div.*>\(\/[0-9]*\)<\/div>.*/{s//\1/;p}'  | sed '/^[0-9].*$/N;s/\n//' > ezweb.lst

SoftBank

テーブルの中に入ってたので抜き出した。

curl $SOFTBANK_URL | sed -n '/^.*">\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)\(\/[0-9]*\).*/{s//\1\3/;p}' > softbank.lst

WILLCOM

改行コードを変換する sed を一つ入れた。

curl $WILLCOM_URL | sed 's/\r/\n/g' | sed -n '/^<td.*">\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]*\).*/{s//\1/;p}' > willcom.lst

.htaccess を作る

awk と組み合わせて、携帯から以外のアクセスを拒否する .htaccess も作ってみた。

# アクセスルール
cat << EOS > .htaccess
order deny,allow
deny from all
EOS
# DoCoMo
curl $DOCOMO_URL | sed -n '/^.*<li>\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]\{1,3\}\)<\/li>.*$/{s//\1/;p}' | awk 'NR==1{print "# docomo"}{print "allow from " $0}END{print ""}' >> .htaccess
# ezweb
curl $EZWEB_URL | sed -n '/^.*<div.*>\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)<\/div>.*/,/^.*<div.*>\(\/[0-9]*\)<\/div>.*/{s//\1/;p}' | sed '/^[0-9].*$/N;s/\n//' | awk 'NR==1{print "# ezweb"}{print "allow from " $0}END{print ""}' >> .htaccess
# SoftBank
curl $SOFTBANK_URL | sed -n '/^.*">\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\)\(\/[0-9]*\).*/{s//\1\3/;p}' | awk 'NR==1{print "# softbank"}{print "allow from " $0}END{print ""}' >> .htaccess
# WILLCOM
curl $WILLCOM_URL | sed 's/\r/\n/g' | sed -n '/^<td.*">\(\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}\/[0-9]*\).*/{s//\1/;p}' | awk 'NR==1{print "# willcom"}{print "allow from "$0}' >> .htaccess

かなり見にくくなった。

2008年 1月 22日 | Posted in Linux
タグ:
コメントは終了しています。