腾讯云域名 OpenWrt 自动更新IP shell脚本
需要这个功能 然后找了很多资料都没有 看到一篇类似的本文 原文链接:https://blog.csdn.net/qq_38106751/article/details/108017663
但是原文中的API接口和recordId获取方式都已经无法使用了 这里给出新办法
操作系统:OpenWrt
实现功能:
1、使用DDNS来实现静态IP的效果。
2、定时查询ip然后跟出口IP(wan ip)对比 如果不同才修改
其他信息可参考文档腾讯云域名接口api文档
一、首先自己去添加一条域名和解析记录
二、recordId获取
在域名修改界面按浏览器F12 点击network ,fillter 填写Record.list 然后刷新页面
选择这条请求点击response 往后拉一点,可以快速找到当前的recordId
在Openwrt 的计划任务中添加
*/10 * * * * sh /root/ddns.sh
然后将以下脚本命名为ddns.sh置于/root目录下,可以用WinSCP等软件传到/root (注意是根下面的root文件夹 其他路径也可以 对应修改上面的命令)
然后保存即可。该脚本会每10分钟查询一次自己的公网IP,将解析记录修改
其中
login_token=你的token数字部分,字符串部分
例如 login_token=1231,238159b0ab0d11941dbc43608553a73fa
domain_id=域名IP(直接可以看到)&record_id=刚刚查询到的 组合起来就是
login_token=123123,123159b0ab0d11941dbc43608553a7123&format=json&domain_id=123123&record_id=123123
中间的123123 修改成自己的,两处需要修改
#!/usr/bin/ash
x=$(curl -X POST https://dnsapi.cn/Record.Info -d 'login_token=123123,123159b0ab0d11941dbc43608553a7123&format=json&domain_id=123123&record_id=123123' -H 'Content-Type:application/x-www-form-urlencoded' | jq .record.value)
b=$(echo $x|sed 's/\"//g')
ipw=$(curl -4 ip.sb)
if [ $b == $ipw ];then echo "true";else curl -s -X POST https://dnsapi.cn/Record.Modify -d ' login_token=123123,123159b0ab0d11941dbc43608553a7123&format=json&domain_id=123123&record_id=123123&record_line_id=0&record_type=A&value='$ipw -H 'Content-Type:application/x-www-form-urlencoded' ; fi
echo "done"
注意 第一次使用openwrt的任务计划 需要手动重启cron服务(一般在启动项里面)
文中用到了jq命令 openwrt如果没有安装请下载安装
https://downloads.openwrt.org/releases/packages-21.02/x86_64/packages/jq_1.6-1_x86_64.ipk
这个是21.0.2版本的openwrt x86平台用的jq 需要其他版本请根据需要到 https://pkgs.org/download/jq 进行下载安装