現状、pathconf: Permission deniedというエラーがメールで通知されてきて不安なのだが、mydnsのLOG INFOをみるとちゃんと更新されているので、大丈夫みたい……。
↓
その後、MyDNS.JPはちゃんと更新されているのに対してNo-IP.comは更新されずにexpireすることが判明。何が違うの……???
はじめに
Amazonで人気のDS218jを導入しテケトーに使っていたが、「外部アクセス」機能を使ったDDNS更新がうまく行っていないことに気がついた。どうも、「外部IPアドレスが更新されないと通知しない」ようで、更新間隔が空きすぎてDDNSサービス提供者にexpireさせられるというお約束感のある問題のようである。
というわけで、MyDNS.JPとNo-IP.comの更新を「タスクスケジューラー」機能でやってみた。
MyDNS.JPのDDNS情報を更新する
(わざわざ「カスタマイズ」で外部アクセスのDDNS設定を書いたのに、更新がうまくいかなくてしょんぼりしたワケで。)
HTTP-BASICアクセスなら、更新したいIPアドレス情報を持っていなくても、ユーザ情報だけ持ってアクセスすればアクセス元のIPに更新してくれる親切仕様。(つまり、ルータの下にDSを設置していて外部IPの取得に一手間いる場合に簡単。)
「タスクスケジューラー」で「作成」->「予約タスク」->「ユーザー指定のスクリプト」、「タスク設定」の「ユーザー指定のスクリプト」にwgetコマンドを書いて終了。よくあるシェルスクリプトのように、一行目にbashとかを書く必要も無し。(念のためログファイルの追記出力を書いたが、メールで通知される仕組みがあるからそれで十分な気もする。)
wget --http-user=USERNAME --http-password=PASSWORD http://ipv4.mydns.jp/login.html -a logfile
No-IP.comのDDNS情報を更新する
no-ip.comのページからは情報が見つからなかったが、URLアクセスでIP更新が可能。外部IPアドレスの取得はcurlで。これが最良の方法なのかどうかは知らない。
ip=`curl ifconfig.moe`
wget "http://dynupdate.no-ip.com/update.php?username=USERNAME&pass=PASSWORD&host=HOST&ip=${ip}" -a logfile
補足
sshアクセス可能にしておいて、閲覧可能なパスにログを吐けばミスに気付きやすい。
そうでなくてもメールでレポートが飛ぶように設定できるけどさ。