使用curl建立crontab腳本

使用curl建立crontab腳本

嘗試設定一個 cronjob 與 curl 一起使用。想要在 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

相關內容