whoisコマンドからレジストラ情報を取得してあれこれ

昼に、Facebookを見ていたらこんな記事が。
特別できることが無いので手も足も出ないと言ったところ。

とはいえ、

– whois などのコマンドを利用し、ネームサーバ情報などの登録情報が正し
く設定されているか定期的に確認する (※)

登録情報の不正書き換えによるドメイン名ハイジャックに関する注意喚起

とあるので何もできずとも書き換えられていないかのチェックだけはできるはず。

しかし、やっぱり定期的にと言うのは面倒だし。
だったら、batch処理をしてしまえばいいんじゃないか?
という結論に至ったので作業のメモ。

とりあえずターミナルで叩いてみる

$ whois example.com
~~~ 抜粋 ~~~
Domain Name: example.com
Name Server: name1.server.jp
Name Server: name2.server.jp
Name Server: name3.server.jp
Name Server: name4.server.jp
Name Server: name5.server.jp

こんな感じで大量に色々帰ってくる。
とりあえずネームサーバさえちゃんと正しく設定されていれば、変なページに飛ばないかなという素人感満載の考えでネームサーバの情報を取得してくるようにしてみる。

$ whois example.com | grep "Name Server:"
Name Server: name1.server.jp
Name Server: name2.server.jp
Name Server: name3.server.jp
Name Server: name4.server.jp
Name Server: name5.server.jp

とりあえずこれでこのドメインがどのネームサーバに登録されているのかは確認できる。

シェルファイルにしてしまえ

叩くコマンドが分かったら、シェルファイルにしてしまえばそれを実行すればどこに登録されているか瞬時にわかるので、さっさと作成。

#!/bin/sh

val=$(whois example.com | grep "Name Server:")

echo $val

これだけ。
あとはターミナルから実行すれば前節と同様の答えが返ってくる。

返事がない時だけ表示させれば良いのでは?

これだけだと正直直接叩くのと誤差の範囲なので、正しく設定されている場合は何も返さないようにしてみようと以下の様な書き方をしてみた。

#!/bin/sh

val=$(whois example.com | grep "Name Server: name1.server.jp")

if [ $val=="" ]; then
  echo "alert!!!"
fi

結論から先に言うと失敗。ちゃんと入力されていてもalert!!!と返って来てしまう。
そもそもシェルスクリプトをちゃんと勉強したことも無いわけで、空白文字の調べ方も知らんわけで。

ちゃんと調べてきて、書きなおしたのがこっち

#!/bin/sh

val=$(whois example.com | grep "Name Server: name1.server.jp")

if [ -z "$val" ]; then
  echo "alert!!!"
fi

-z(Zero length)コマンドを付けてやると良いらしい。
これであとは必要なネームサーバ分繰り返したりすれば、チェックがひと通り走ってあとは何か合った時だけアラートを返してくれるはずである。

とりあえず今のところここまで

別の作業をしながらだったので、今日はここまでかな。
これに追加していきたい内容として、テキストファイルに保存された各ドメイン情報を読み込んで勝手に実行してくれるようにすること。
後はbatchをどこで設定するか。
vpsとかに投げ込めばいいかな…

参考

Akito’s IT技術 メモ
シェルスクリプトで空文字列かどうか調べる。 | masa.edw the ハバネロブリーダー

この記事を書いた人

Shizumi

熊本在住のWebプログラマ。熊本WordPressMeetupのオーガナイザー。WordPressを使い始めたのは2012年頃から。