Raspberry Pi + nginx = Webサーバー
cron で MyDNSにIPアドレスを自動通知
cron で MyDNSにIPアドレスを自動通知
MyDNS.JPには、IPアドレスを最低1週間に一度、通知しなければならない。
この通知を怠ると
・一週間以上IPアドレスの通知がないと、エラーサイトに誘導します。
・一ヶ月以上ご利用がないと、全てのデータを削除しますのでご注意ください。
と、なる。
・一週間以上IPアドレスの通知がないと、エラーサイトに誘導します。
・一ヶ月以上ご利用がないと、全てのデータを削除しますのでご注意ください。
と、なる。
定期的にジョブを自動実行する、【cron】という便利なスケジューラーがある。
この cron を利用して、IPアドレスを MyDNS に自動通知するように試みる。
スポンサー リンク
結論:うまく行った通知方法
postfix というメールソフトをインストール。
sudo apt-get install postfix
local Only でインストールする。
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 * * * /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」というエラーが出る・・・何故かわからない。
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 に直接書くのではなく、スクリプトにして見るとうまく行った。
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 には通知されない。
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 には通知されない。
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 には通知されない。
デフォルトでは 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 → ログメッセージは空。
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)
スポンサー リンク