数千件のIPアドレスを逆引きしまくるミッション用スクリプト完成!?
転職したての頃にこんな記事を書いていました。
この記事の中で、
本当はしたかったこと
実は逆引き対象のIPアドレスのリストには、かなりの数のダブりがあったりしたので、 重複している分は一回だけ、digして、すでにdigで結果を得ている部分は、 もう一度DNSに問い合わせをしないで、問い合わせ済みのデータを使う とかできたら、少しはネットワークリソースを使わずに済んだのな。 あと、処理も少しは早くなったろうに…
きっと条件分岐とかうまく使えばできるんだろうけど。 今後の課題です。
ということをぼやいていました。
ここ数日いろいろとシェルスクリプトを書き始めて、条件分岐とかループとかの扱いがなんとなく見えてきたので、3カ月ほど前の自分がしたかったことを実装してみました。
IPアドレスのリストを与えると、逆引きしまくってくれるスクリプト
一行ごとにIPアドレスが一つだけ列挙されている状態のファイルを引数として与えてあげることで、ひたすら逆引きをして、与えたIPアドレスとFQDNのペアをカンマ区切りで出力してくれます。 一行に1一つのIPアドレスを想定して作りましたが、「for ~ in ~」で読み込んでいるので、スペース区切りやタブ区切りが混じっていても問題ないような気がします。
リダイレクトしてファイルに書き出せばcsvファイルとしてExcelとかで読み込めるはずです。
一度逆引きをしたIPアドレスとFQDNについては、tmpファイルに記憶しておいて、そっちから引っ張ってくる(grep)ようにしています。ネットワークトラフィックをこれで減少させられるはずです。
これからしたいこと
IPアドレスの逆引きをするときって、メールログの解析のときとかだったりするので、その辺のログを読み込ませるだけでいいようになればよいなと。ついでにもうちょいいろいろ集計できたらなと。
IPアドレスの国別割り当ては公開リストがあるようなので、その辺の判別結果も出るようにしたり…。
いつ使うのやらですが、いつか使いそうなので、ちょこちょこバージョンあげましょう…。