« ReadyNAS Ultra2購入 | トップページ | iPhoneを85%まで充電できるリチウム乾電池 »

2012年2月25日 (土)

ReadyNAS Ultra2でMyDNSを更新するシェル

家でサーバー公開するなら、変動するIPアドレスに対応するためダイナミックDNSを利用する事になります。
PCで作ったサーバーならDiCEを使えば良いですが、NASなのでそういうわけにもいきません。
ReadyNASならアドオンもあるのですが、どうやらDynDNS用? ただDynDNSは有料化されたらしくイマイチです。

で、個人的に前から使っていたMyDNSを更新するシェルを作ってみました。

まずはReadyNAS Ultar2にログインできるようにします。

「Enable Root SSH アクセス」
http://www.readynas.com/ja/?p=3492

これのx86をダウンロードしてReadyNAS Ultra2のFrontview>アドオン>追加 でファイルを選び、「アップロードしベリファイする」を押します。
インストールが終わっても特にFrontviewに変化はありませんが以下のようなメールが届きます。
--------------------------------
Successfully enabled root SSH access. The root password is now the same as your admin password.
--------------------------------
んでrootでadminのパスワードでログインにできるようになります。

SSHでどうログインするかですが、Macならばターミナルが使えます。
シェル>新規リモート接続
にて「セキュアシェル(ssh)」にReadyNAS Ultra2のIPアドレスを入れて、rootで接続します。
Ssh

で、ログインすれば/rootに入ります。
ここに以下のファイルを作成。
mydns.sh
--------------------------------
/usr/bin/wget http://www.mydns.jp/login.html --http-user=あなたのID --http-passwd=あなたのパスワード -t 1 -nd -q -O mydns.html
/bin/rm -f mydns.html
--------------------------------

つまりはwgetを使ってMyDNSにHTTP-BASICでアクセスしてIPアドレスを更新します。
wgetに与えた引数の意味としては
アクセスするアドレス:http://www.mydns.jp/login.html
あなたのID:--http-user=あなたのID
あなたのパスワード:--http-passwd=あなたのパスワード
試行回数1回:-t 1
ディレクトリは作成しない:-nd
ログを表示しない:-1
出力ファイル名:-O mydns.html

といった感じです。
別にアドレスとID、パスだけでも問題なく動きますがなんとなくで他の設定も入れてみました。
んで、取得したファイルは特に不要なのでrmで消す、というシェルです。

ファイルを作成したら
--------------------------------
chmod 755 mydns.sh
--------------------------------
とかで実行可能にします。

これをcronで定期的に実行します。
が、ReadyNAS Ultra2の場合はエディターをviに変えないといけないようなので
--------------------------------
EDITOR=vi
export EDITOR
--------------------------------
とします。

んで
--------------------------------
crontab -e
--------------------------------
と実行すると

--------------------------------
# m h dom mon dow command
--------------------------------
と最初に書いてあるので、viで以下のように追加します。

--------------------------------
# m h dom mon dow command
33 0-23/3 * * * /root/mydns.sh >/dev/null 2>&1
--------------------------------
これで3時間毎の33分(0:33、3:33、6:33…)にmydns.shを実行します。
最初の33が「分」の設定で33分という事です。
次のが0から23の間に3つおき、つまり3時間毎になります。0-23は結局は24時間なので「*/3」でも可能です。逆に時間帯を指定して「9-21/3」とすれば9時から21時の間で3時間毎となります。

なぜ33分なのかというと…なんとなく一般的に0分に更新するという設定をしている人が多そうな気がするので、そうすると0分にMyDNSにアクセスが集中する事になります。
なんかそれは申し訳ないなーという事で、例えばこの例では33分にしてみました。私の使っている実際のシェルではさらに別にしてます。

最後の「>/dev/null 2>&1」は出力をメールせず捨てます。
ただ、そもそもReadyNAS Ultra2ではmailが使えない気がするので放置でもいい気もするけど余計なゴミの可能性を出さないという事で捨ててます。
逆に、更新でエラーとなったときだけメールして欲しい気もしますが、その場合はmailをインストールする所から始めないといけない気がします。


これでMyDNSのIPアドレス更新が定期的に実行できます。
ググってみるとParl等で色々とあるようですが、wgetならかなりシンプルなんじゃないかと思うんですがいかがでしょう?

« ReadyNAS Ultra2購入 | トップページ | iPhoneを85%まで充電できるリチウム乾電池 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1037260/44262307

この記事へのトラックバック一覧です: ReadyNAS Ultra2でMyDNSを更新するシェル:

« ReadyNAS Ultra2購入 | トップページ | iPhoneを85%まで充電できるリチウム乾電池 »