LoginSignup
3
2

More than 5 years have passed since last update.

シェルでMyDNSにIP通知

Posted at

サーバーは借りてるけど、ドメインは無料…そんな私向けの備忘録です(笑)

前提条件

  • DNSはMyDNSを使っている
  • サーバーは固定IP
  • Linuxを使っている

コマンド

#!/bin/bash

while :
do
    status=`curl -o /dev/null -w %{http_code} -s --user $user:$pass www.mydns.jp/login.html`
    if [ $status -eq 200 ]; then
        break
    fi
done

ちょこっと解説

while :

無限ループしてくれます。

curl -o /dev/null -w %{http_code} -s

「-o /dev/null」で出力を無効にします。
「-w %{http_code}」で出力をステータスコードにします。
「-s」はサイレントモードの指定です。
(多分…)

こんなシェルを作った経緯

MyDNSは、どうも固定IPを設定しても定期的に通知が必要なようです。
(メールが飛んできました。)
そこで当初、こんな簡易なシェルでやってました。

#!/bin/bash

curl --user $user:$pass www.mydns.jp/login.html

cronで月曜日と木曜日に流し、約2ヶ月は問題なく運用できてました。
ところがある日「IP通知してね」のメールが…
「え??やってますけど…」と思いcronのログを確認したところ、401エラーが∑( ̄□ ̄|||)
どうも正しいユーザー:パスワードを設定しても、たまにエラーになっていたようです。
(1週間以内に通知しておけばメールが来ないため、月曜日か木曜日が成功すればメールは来なかった。)
そこで、無限ループで200が返ってくるまで繰り返す…というシェルにしてみました。

最後に…

もし「MyDNSで固定IPを設定したら通知は不要」という方法をご存知の方がいらっしゃいましたら、ご連絡お待ちしております♪
つまんない記事ではりますが、誰かのお役に立ちましたら。。。

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2