ダイナミックDNS変更コマンドの起動をcronからsystemd-timerへ

MyDNS

ダイナミックDNSの情報変更コマンドの起動をcronからsystemd-timerへ変更してみました.

serviceファイル

/etc/systemd/system/mydns.serviceというファイルを以下の内容で作成します.

[Unit]
Description=MyDNS IP Update
#After=network.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sh -c 'curl -u master_id:password https://ipv4.mydns.jp/login.html'

timerファイル

/etc/systemd/system/mydns.timerというファイルを以下の内容で作成します.

[Unit]
Description=Run mydns.service at every hour
OnBootSec=3min
OnUnitActiveSec=60min
Unit=mydns.service
[Install]
WantedBy=timers.target

timerの有効化

以下のコマンドを実行し,timerを有効化します.

systemctl daemon-reload
systemctl enable mydns.timer
systemctl start mydns.timer
systemctl -t timer

確認

以下のコマンドで次回実行時刻が設定されていればOKです.

systemctl list-timers

確認が取れたら,cronの設定を変更(削除)してください.

serviceファイルのExecStartで指定するファイルによっては,SELinuxの設定( semanage fcontext -a -t crond_exec_t PathToShell)が必要です.

上記の形式では不要でしたが,実行権をつけたshシェルスクリプトのパスを記載したものでは設定が必要でした.

(/usr/bin/sh -c ではどうなるか試していません)

※2021/12/26 アクセス先URL変更

タイトルとURLをコピーしました