尝试设置一个 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