curlでcrontabスクリプトを作成する

curlでcrontabスクリプトを作成する

curl で使用する cronjob を設定しようとしています。noip.com の IP を更新したいです。以下のコマンドは noip.com から IP を取得しますが、サーバーの IP で更新しません。つまり、IP が更新されないと、古い IP が取得されます。

curl -X GET 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic $(base64 <<< $xxxxxxx:$xxxxxx)" -d "hostname=$xxxxx.ddns.net"

以下のコマンドはエラーを生成しますsh: GET: command not found

ExecStart=/usr/bin/curl-X GET 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxxx:$xxxxx>" -d 'hostname=<hostname>.xxxxxx.ddns.net'

適切なスクリプトのヘルプが必要です

答え1

最近の Linux システムでは、 ではなくcrontab、 systemd タイマーを使用します。

/etc/systemd/system/updateip.service次の内容のファイルを作成します。

[Unit]
Description=Update IP

[Service]
Type=oneshot
ExecStart=/usr/bin/curl -X GET 'https://dynupdate.no-ip.com/nic/update' --header "Authorization: Basic <$xxxxx:$xxxxx>" -d 'hostname=<hostname>.xxxxxx.ddns.net'

/etc/systemd/system/updateip.timerここで、次の内容のタイマーを追加して、10 分ごとに実行します。

[Unit]
Description=Update IP every 10 minutes

[Timer]
OnCalendar=*:0/10

タイマーを有効にするには、systemctl start updateip.timer

関連情報