アーカイブ

  • 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
Archive for 2008年 1月