嘗試設定一個 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