2015年12月9日水曜日

Systemdを使ってDDNS更新する

自宅のRaspberryPiを自鯖にしていて、
DDNSをieServerで取って自動更新しようと思ったのでメモ。

OSはRaspbian(debian) jessieを使っているので、CronではなくSystemdで定周期タイマーをセットします。


Step.1 更新用スクリプトをダウンロード

 /usr/local/ddnsフォルダにスクリプトファイルを格納する。

$ sudo mkdir /usr/local/ddns
$ sudo chmod 777 /usr/local/ddns
$ cd /usr/local/ddns
$ wget http://ieserver.net/ddns-update.txt
$ mv ddns-update.txt ddns-update.pl


Step2. スクリプトの設定をする

 ファイルを開き、以下を編集する。
 $ vim ddns-update.pl
$CURRENT_IP_FILE = "/usr/local/ddns/current_ip";
$LOG_FILE        = "/usr/local/ddns/ip_update.log";
$ACCOUNR   = "account_name";
$DOMAIN      = "dip.jp";
$PASSWORD = "password";


Step3. スクリプトを使ってIP更新ができてるかチェック

実行
$ ./ddns-update.pl
確認
$ vim ip_update.log
 Wed Dec  9 15:56:06 2015 account_name.dip.jp Updated 0.0.0.0 to 123.123.123.123

Updatedになっているか確認する。
Abortedになっている場合は設定がうまくいっていない。


Step4. systemdを使って定周期タイマーをセット

フォルダを作成して移動
$ sudo mkdir ~/.config/systemd/
$ sudo mkdir ~/.config/systemd/user
$ cd ~/.config/systemd/user

スクリプトを作成する
$ vim ddns-update.service

-----------------------------------------
[Unit]
Description=update to ieServer DDNS
[Service]
Type=simple
ExecStart=/usr/local/ddns/ddns-update.pl
[Install]
WantedBy=default.target
-----------------------------------------

$ vim ddns-update.timer
-----------------------------------------
[Unit]
Description = update to ieServer DDNS weekly
[Timer]
OnBootSec=1min
OnUnitActiveSec=weekly
Unit=ddns-update.service
[Install]
WantedBy=timers.target
-----------------------------------------


Step5. systemd更新&タイマー実行

systemd更新
$ systemctl --user daemon-reload
$ systemctl --user start ddns-update.timer

ちゃんとタイマーがセットされてるか確認
$ systemctl --user list-unit-files --type service --all
$ systemctl --user list-timers


目的のスクリプトが実行されたか確認
$ vim /usr/local/ddns/ip_update.log

注意:/usr/local/ddns/フォルダに「current_ip」ファイルがある場合は削除しておくこと。


コメントを投稿

Androider