digをwatchで定期実行

DNSレコードの反映が待ちきれない時の気休め

ブラウザなどで更新を繰り返すのは面倒だと思う。

まあ、1日待つのが正解だとは思うが、気になるときもあるのでシェルでウォッチすればいいと思いついた。

環境はmacos

watchコマンド

まずは、watchコマンドのインストール。homebrewからインストールする。

$ brew install watch

インストールできたら、watchコマンドの使い方を確認。

$ man watch
# オプションについてはこの辺を使えば十分だろう。
-d, --differences [permanent]
        Highlight  the differences between successive updates.  Option will read optional argument that changes
        highlight to be permanent, allowing to see what has changed at least once since first iteration.

-n, --interval seconds
        Specify update interval.  The command will not allow quicker than 0.1 second  interval,  in  which  the
        smaller values are converted. Both '.' and ',' work for any locales.

-dで差分を強調表示。-nで実行間隔の指定。watch [options] commandで指定した間隔でcommandを定期実行する。 間隔を指定しないと2秒ごとになる。

digコマンド

watchで実行するコマンドは、dig。これは、DNSのクエリを行ってくれる。

-tオプションでレコードのタイプを指定できる。デフォルトはAレコード。

$ dig -t txt <some_domain>

なら、<some_domain>TXTレコードを聞きに行く。

DNSレコードを新しく設定した時は、正しく問い合わせても、期待したレコードはなく、空となる。反映されれば空でないレコードが返る。

組み合わせる

watchdigを定期実行すれば、DNSの反映を監視できる。上の例なら、

$ watch -n 60 -d 'dig -t txt <some_domain>'

このようにすれば、1分ごとに確認してくれる。TTLは大体3600秒なので、もっと間隔は空けてもいい。

便利なwatch

watchは大雑把な監視に向いている。curlgrepと組み合わせることもできる。 必要な時に思いつけるようにしたい。

タイトルとURLをコピーしました