Cronを辞めてSystemd/timerでmydnsのIPアドレス通知をさせる

前々から手持ちののRaspberry PiでCronが動いてくれなくて,IPアドレスの通知をほぼほぼ手動で行っていた.が,最近ではCronからSystemd/timerが主流になっているとコメントをもらったので早速トライしてみた.(コメントを見てすぐ秒で実装して投稿しているため) 具体的にCronが何故Systemd/timerに取って代わられているのか?などの考察などはしていないのだけれど,この方法で手持ちのRaspberry Piでの通知がうまく行ったため実装の方法だけ淡々と綴ることにする.

シェルスクリプト

どっかのサイトで拾って自分なりに変えた・・・というか実行できるようにした奴.これを特定時刻に起動してもらってIPアドレスの通知をする.

# 場所:/etc/cron.everyday/mydns.sh

#!/bin/sh
# mydns.JP
curl -s -u mydnsXXXXXXX:XXXXXXXXXX https://ipv4.mydns.jp/login.html

# XXXXXXXは自分のID
# XXXXXXXXXXは自分のPW

Serviceファイルの作成

サービスファイルを作る.ここでは実行したいスクリプトファイルを指定する.

$ cd /etc/systemd/system
$ sudo nano ip.service

[Unit]
Description=ip

[Service]
Type=simple
ExecStart=/etc/cron.everyday/mydns.sh

Timerファイルの作成

タイマーファイルを作る.ここでは実行したいサービスファイルを指定する.
直接スクリプトをどれほどの周期で実行するかを指定できるCronと違ってひと手間多い…

$ cd /etc/systemd/system
$ sudo nano ip.timer

[Unit]
Description=ip.Timer

[Timer]
# これは毎日5分ずつ更新させるように設定したもの
OnCalendar=*-*-* *:00,05,10,15,20,25,30,35,40,45,50,55:00
Unit=ip.service

[Install]
WantedBy=timers.target

動作設定/確認

# chmodでスクリプトの権限変更
$ sudo chmod +x /etc/cron.everyday/mydns.sh 

# 動作設定
$ sudo systemctl daemon-reload 
$ sudo systemctl start ip.timer
$ sudo systemctl enable ip.timer

# タイマーリストに加わっているか確認
$ sudo systemctl list-timers 

結果

上手く通知された. ひょろ君ありがとう.

感想

Cronより更新周期の設定,作るファイルが一つ多いので工程が面倒臭く感じた.
そのうち前述の主流になりつつある理由なども加筆したい.

コメントを残す

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

CAPTCHA


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