アーカイブ
-
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 と組み合わせて、携帯から以外のアクセスを拒否する [...]2008年 1月 22日 | Filed under Linux -
awk を書いてみる
awk というと、列を取り出すことくらいにしか使っていなかったので、他のことにも使えるように練習をしてみる。
特に何かに使うわけではないけど、練習がてら /var/log/secure ログファイルの中の、ssh の認証で 3 回以上失敗した IP アドレスと失敗回数を awk で拾ってみた。sed -n ‘/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p’ /var/log/secure | awk ‘NR==1{oip=$1;num=1;next}{nip=$1}oip~nip{++num;next}oip!~nip{if(num>=3){print num,oip}oip=nip;num=1;next}’
練習用なので自分のために解説をすると…
まず sed で Failed した IP アドレスだけを抜く(全部 awk でできるかもしれないけど sed が楽)。sed -n ‘/Failed/s/.* sshd.*Failed password for.* \([0-9.]*\) port .*/\1/p’ /var/log/secure
それから awk に渡す。
まず一行目の IP をとって比較用の変数に入れてカウントして、次の行に処理を移行する。awk ‘NR==1{oip=$1;num=1;next}
次の行の IP をとって別の変数に入れて、
{nip=$1}
前の行の IP と現在の行の IP を比べて同じならカウントして次の行に評価を移行。
oip~nip{++num;next}
違う IP [...]
2008年 1月 14日 | Filed under Linux