能否在本地FritzBox路由器运行.sh脚本?如何触发Cloudflare IP更新?
在FritzBox路由器上运行Cloudflare动态IP更新脚本的方案
你可以在FritzBox上运行这类Bash脚本,下面是实现定时执行或IP变化触发的具体方法:
前提准备:开启FritzBox的SSH访问
FritzBox默认隐藏了SSH功能,需要先开启:
- 打开路由器管理界面(通常是
http://fritz.box),进入「系统」→「语言」,临时切换为英语(部分型号需要此步骤)。 - 在地址栏输入
http://fritz.box/support.lua,找到「Telnet/SSH」选项,开启SSH服务,设置端口和登录密码。
调整你的脚本
FritzBox的根文件系统是只读的,所以要把脚本和IP记录文件放到外接的USB存储设备上:
- 把USB设备插入FritzBox,通过管理界面确认设备已挂载(通常会自动挂载到
/mnt/usb)。 - 修改你的脚本,将路径替换为USB存储的路径,同时替换脚本中的占位符(
{zone_id}、{dns_record_id}、邮箱、API密钥)为实际值:
NEW_IP=$(curl -s http://ipv4.icanhazip.com) CURRENT_IP=$(cat /mnt/usb/ip.txt 2>/dev/null || echo "") if [ "$NEW_IP" = "$CURRENT_IP" ]; then echo "IP地址无变化" else # 更新domain-one的DNS记录 curl -X PUT "https://api.cloudflare.com/client/v4/zones/{zone_id_for_domain_one}/dns_records/{dns_record_id_for_domain_one_record_one}" \ -H "X-Auth-Email: {你的邮箱}" \ -H "X-Auth-Key: {你的Cloudflare全局API密钥}" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"domain-one.com","content":"'$NEW_IP'","ttl":1,"proxied":true}' echo "$NEW_IP" > /mnt/usb/ip.txt fi
- 通过SSH登录路由器,给脚本添加执行权限:
chmod +x /mnt/usb/cloudflare_update.sh
两种触发方式
1. 定时执行(用crontab)
通过定时任务按固定周期运行脚本:
- SSH登录到FritzBox:
ssh root@fritz.box -p [你设置的SSH端口]
- 编辑定时任务:
crontab -e
- 添加一行任务(示例为每10分钟运行一次,同时记录日志):
*/10 * * * * /mnt/usb/cloudflare_update.sh >> /mnt/usb/update_log.txt 2>&1
- 保存退出后,crontab会自动生效。
2. IP变化时触发
通过循环脚本监控WAN口IP,一旦变化就执行更新:
- 创建监控脚本
/mnt/usb/monitor_ip.sh:
#!/bin/sh IP_FILE="/mnt/usb/ip.txt" while true; do NEW_IP=$(curl -s http://ipv4.icanhazip.com) CURRENT_IP=$(cat "$IP_FILE" 2>/dev/null || echo "") if [ "$NEW_IP" != "$CURRENT_IP" ]; then /mnt/usb/cloudflare_update.sh fi sleep 300 # 每5分钟检查一次IP done
- 给监控脚本添加执行权限:
chmod +x /mnt/usb/monitor_ip.sh
- 设置开机自启:
- 先把根文件系统挂载为可写:
mount -o remount,rw / - 编辑
/etc/rc.local,在exit 0前添加一行:/mnt/usb/monitor_ip.sh & - 再把根文件系统挂载回只读:
mount -o remount,ro /
- 先把根文件系统挂载为可写:
注意事项
- FritzBox重启后,USB挂载通常会自动恢复,但如果出现异常,可在
rc.local中添加挂载命令。 - 固件更新可能会重置SSH设置和自定义脚本,需要重新配置。
- 确保路由器能正常访问外部网络(包括
ipv4.icanhazip.com和Cloudflare的API服务器)。
内容的提问来源于stack exchange,提问作者Mqx
相关产品推荐
相关产品推荐

