開発者でも何でもない素人によるサイト

Raspberry PiでMyDNS IPアドレス更新の自動化

  • このエントリーをはてなブックマークに追加

無料で利用できるDDNS、MyDNSのIPアドレス更新をcronを利用して自動化します。

Raspberry Piは電気代がほとんどかからないので、DDNSと組み合わせることで、常に自宅のネットワークにアクセス出来る環境を格安で用意できます。

以下はUbuntuで実行していますが、Raspbianでも問題なく動くはずです。

シェルスクリプトの作成

vi mydns-update
#!/bin/bash
# MyDNS

#以下2行イコール以下にIDとパスワードをそのまま入力
username=
password=

wget --quiet -O - --http-user=${username} --http-password=${password} http://www.mydns.jp/login.html

保存したら実行権限を与え、動作を確認します。

chmod 711 mydns-update
./mydns-update

「Login and IP address notify OK.」という文字列が出てれば、おそらくOK。

一応MyDNSにログインして、「log info」を確認してみる。

cronに設定

cron.hourlyに置いて、1時間毎に実行させます。

sudo mv mydns-update /etc/cron.hourly/

追記:メール送信機能を追加

上のままだと、cronから送られてくるメールに標準出力が全部書かれていて見づらいので、結果を簡潔にメールで通知する機能を付けました。

もっと簡単かつ正確にかけるんだろうなあ…

#!/bin/bash
# MyDNS IPアドレス通知

# イコール以下にIDとパスワードをそのまま入力
username=
password=

# IPアドレスをアップデート、結果をメールで知らせる
dltemp=`mktemp`
wget -q --http-user=$username --http-password=$password \http://www.mydns.jp/login.html -O $dltemp
if [ -n "$(grep "notify\ OK" $dltemp)" ]; then
        sed -n -e "/Login\ and\ IP\ address\ notify\ OK/p" $dltemp | \mail -s 'MyDNS update' root
else
echo 'Some error occurs while updating.' | \mail -s 'MyDNS Update Error!'\ root
fi

rm -f $dltemp