Raspberry Pi cron で MyDNSにIPアドレスを自動通知

Raspberry Pi + nginx = Webサーバー
cron で MyDNSにIPアドレスを自動通知
 
MyDNS.JPには、IPアドレスを最低1週間に一度、通知しなければならない。
 
この通知を怠ると
 ・一週間以上IPアドレスの通知がないと、エラーサイトに誘導します。
 ・一ヶ月以上ご利用がないと、全てのデータを削除しますのでご注意ください。
と、なる。
 
定期的にジョブを自動実行する、【cron】という便利なスケジューラーがある。
 
この cron を利用して、IPアドレスを MyDNS に自動通知するように試みる。
 
 

 

スポンサー リンク

 

 
 
結論:うまく行った通知方法
 
postfix というメールソフトをインストール。
sudo apt-get install postfix
local Only でインストールする。
 
Raspberry Pi なので、メールシステムがなければ、(No MTA installed, discarding output)という、エラーメッセージが出る。
 
cron で mydns に ipアドレスを通知した結果は、MTA により postfix のメールボックスに書き込まれるので、
sudo cat /var/mail/root
で、その内容が参照できる。
 
 
クーロンの設定
 
①. cronで実行するスクリプト用のディレクトリを作成。
sudo mkdir /etc/cron.everyday/ 
 
②. MyDNS.jpへの通知用スクリプトを作る → mydns.sh。
sudo nano /etc/cron.everyday/mydns.sh
#!/bin/sh

# mydns.JPへの通知
cd /; /usr/bin/wget -O – ‘http://mydnsID1:mydnsPASS1@www.mydns.jp/login.html’
cd /; /usr/bin/wget -O – ‘http://mydnsID2:mydnsPASS2@www.mydns.jp/login.html’
#
上記の例は、ドメインを2つ取得したので2行になっている。
 
③. cronの設定ファイルに追記。(3時12分に実行)
sudo crontab -e
12 3 * * *  /etc/cron.everyday/mydns.sh
 
 
注意点。
12 3 * * *run-parts /etc/cron.everyday/mydns.sh
run-partsと記述する場合、が大文字の空白なら上手く行くが、小文字の空白の場合「run-parts: failed to open directory /etc/cron.everyday/mydns.sh: Not a directory」というエラーが出る・・・何故かわからない。
 
④. スクリプトに実行権限を与える。
sudo chmod +x /etc/cron.everyday/mydns.sh 
 
 ⑤. 実際に使ってみる。
/etc/cron.everyday/mydns.sh 
 
⑥. cronに設定を再読み込みさせる。
/etc/init.d/cron reload 
 
これで、OKとなる!!
 


cron で MyDNS.jp への通知がうまく行かず、試行錯誤した記録
 
 
sudo crontab -e
 
上記コマンドを実行したら nano が起動するので、以下の行をファイルに書き足す。
 
0 3 * * * wget -q -O /dev/null http://mydnsID:mydnsPASS@www.mydns.jp/login.html
 
これで、午前3時に通知がされるようになる。 → ハズであったが・・・
 
 
Raspberry Pi cron で MyDNS IPアドレスを自動更新
スクリプトにするとうまく行った
 
 
何故なのか、理由もわからず、cron に直接書くのではなく、スクリプトにして見るとうまく行った。
 
 
2017.01.21 バージョンアップ版をアップしました。
スクリプトに “cd /; /usr/bin/***” と書く
 


wget -q -O /dev/null http://mydnsID:mydnsPASS@www.mydns.jp/login.html
 
を、コマンドとして入力するとうまく行くが・・・
 
◆cron が実行されると、次のようなメッセージが出力される。
No MTA Installed discarding output → MTA(Mail Transfer Agent):メーラーのこと
そこで、postfix というソフトをインストール。
sudo apt-get install postfix → local Only でインストールするが、MyDNS.jp には通知されない
 
◆PostfixでIPv6の警告が表示される
warning: inet_protocols: disabling IPv6 name/address support: Address family not supported by protocol
sudo nano /etc/postfix/main.cf ← 設定ファイルを開き、ipv4 だけにする
inet_protocols = ipv4 ← この行を追加するが、MyDNS.jp には通知されない
 
◆/etc/hosts の一番最後の行を自前のローカルIPに書き換える
デフォルトでは 127.0.1.1 raspberrypi
これを自前のIP 192.168.11.102 raspberrypi に書き換えてみるが、MyDNS.jp には通知されない
 
◆cron のログの変更と確認
sudo cat /var/log/syslog → 特に問題があるようなメッセージはない。
sudo nano /etc/rsyslog.conf ← で #cron.* /var/log/cron.log を編集し
 /var/log/cron.log にログファイルが作成されるようにする。
sudo cat /var/log/cron.log → ログメッセージは空。
さらに、cron に登録したコマンドを変更し、
0 3 * * * wget -q -O result.log http://mydnsID:mydnsPASS@www.mydns.jp/login.html
 
sudo cat /var/log/result.log → ログメッセージは空。
と、色々やってみるが、MyDNS.jp には通知されない
 

以上。
(2015.05.20 / 2016.08.12)

 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください