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 ハバネロブリーダー

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です