首页
关于本博客
友情链接
推荐
linux/shell
Search
1
LEDE官方固件安装中文语言包的方法
11,087 阅读
2
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
9,183 阅读
3
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
8,153 阅读
4
一次OpenVPN交叉编译笔记
6,664 阅读
5
利用iptables的string模块来屏蔽域名(关键词匹配)
6,111 阅读
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
登录
Search
标签搜索
nginx
OpenWrt
openvpn
SSH
seafile
cloudflare
iptables
openssl
linux
letsencrypt
CentOS
反向代理
ftp
openvpn配置模板
vsftpd
seafile网盘
Linux启动脚本
ddns
nas
seafile服务器
自渡
累计撰写
75
篇文章
累计收到
1
条评论
首页
栏目
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
页面
关于本博客
友情链接
推荐
linux/shell
搜索到
2
篇与
ddns
的结果
2024-08-02
(2024年重写)基于shell的cloudflare动态ddns脚本
说明:1.该脚本需在Linux操作系统下运行,并配合crontab定时运行,请确保crond服务处于开启状态,建议1分钟检测一次IP变动,配置如下:crontab -e */1 * * * * cfddns.sh2.APIKEY和ZONE ID的具体获取方法参照以往发布过的说明:https://www.zavierlab.com/post/52.html以下为A记录脚本内容(适用于动态IPv4):#!/bin/sh CF_API_KEY= CF_ZONE_ID= #Your cloudflare E-mail EMAIL= #Your network device, e.g.,eth0 ROUTER_NETWORK_DEVICE= #Your DNS record, e.g.,www.domain.com DNS_RECORD= CF_DNS_ID=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?type=A&name=${DNS_RECORD}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json"|sed 's/,/\n/g'|grep -E "result.*id"|awk -F ":" '{print $3}'|sed 's/"//g') CURRENT_RESOLV=$( curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" |awk -F '"' '{print $26}' ) CURRENT_IP=$( ifconfig $ROUTER_NETWORK_DEVICE | awk -F'[ ]+|:' '/inet /{print $4}' ) if [ $CURRENT_RESOLV == $CURRENT_IP ]; then exit 1 else curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"'$DNS_RECORD'","content":"'$CURRENT_IP'","ttl":1,"proxied":false}' fi以下为AAAA记录DDNS脚本(适用于动态ipv6):#!/bin/sh CF_API_KEY= CF_ZONE_ID= #Your cloudflare E-mail EMAIL= #Your network device, e.g.,eth0 ROUTER_NETWORK_DEVICE= #Your DNS record, e.g.,www.domain.com DNS_RECORD= CF_DNS_ID=$(curl -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records?type=AAAA&name=${DNS_RECORD}" -H "X-Auth-Email:${EMAIL}" -H "X-Auth-Key:${CF_API_KEY}" -H "Content-Type: application/json"|sed 's/,/\n/g'|grep -E "result.*id"|awk -F ":" '{print $3}'|sed 's/"//g') CURRENT_RESOLV=$( curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" |awk -F '"' '{print $26}' ) CURRENT_IP=$( ifconfig $ROUTER_NETWORK_DEVICE |grep "prefixlen 128"|awk '{print $2}' ) if [ $CURRENT_RESOLV == $CURRENT_IP ]; then exit 1 else curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"AAAA","name":"'$DNS_RECORD'","content":"'$CURRENT_IP'","ttl":1,"proxied":false}' fi
2024年08月02日
169 阅读
0 评论
0 点赞
2018-04-24
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
家庭宽带的IP是不固定的,当出门在外,人不在家时,一旦IP变动,就给接入家中的设备(如监控)带来许多麻烦,于是我编写了一个能在Linux系统下运行,基于cloudflare API的动态DNS脚本,虽然国内已有花生壳之类的ddns服务,但是那些实在是太坑爹,比如只能使用它提供的二级域名,而该脚本能够配置顶级域名的动态DNS解析。使用前提:局域网内有Linux主机(如openwrt路由设备)、有一个顶级域名、域名解析必须由CloudFlare托管。使用方法:步骤一:到CloudFlare官网注册一个帐号,找到DNS选项,如下图箭头指向,根据其要求,到你的域名注册商处将DNS服务器修改为CloudFlare提供的地址,修改完验证成功后就可以开始解析了。步骤三:获取三个Key值,其中APIKey和ZoneID可在官网登录后的Overview页面获得,而DNSID获取较为复杂,具体命令如下(需要安装curl):curl -X GET "https://api.cloudflare.com/client/v4/zones/输入你的ZoneID/dns_records?type=A&name=刚才设置的记录值(比如xxx.yourdomain.com)" \ -H "X-Auth-Email:你注册时的邮箱" \ -H "X-Auth-Key:你的APIKEY" \ -H "Content-Type: application/json"运行该命令后会输出结果,找到"id":"xxx"这个选项,其中的xxx即对应你的DNSID值下方为shell脚本(需要设备安装curl),配置好后可利用crontab命令定时执行,(1-2分钟执行一次最佳)具体操作如下:crontab -e */2 * * * * 脚本存放目录cfddns.sh#!/bin/sh CF_API_KEY=输入你的APIKEY CF_ZONE_ID=输入你的ZONEID CF_DNS_ID=输入你的解析记录值对应的DNSID EMAIL=输入你注册时的邮箱 ROUTER_NETWORK_DEVICE=你的设备拨号的网卡,openwrt一般是pppoe,可使用ifconfig命令查看 TEMP_FILE_PATH=/tmp/cloudflare-ddns/DNS_RECORD=填写用于ddns的DNS记录,要完整填写,比如:xxx.yourdomain.com mkdir -p ${TEMP_FILE_PATH}curl -k -X GET "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" |awk -F '"' '{print $26}'>${TEMP_FILE_PATH}/current_resolving.txt ifconfig $ROUTER_NETWORK_DEVICE | awk -F'[ ]+|:' '/inet /{print $4}'>${TEMP_FILE_PATH}/current_ip.txt if [ "$(cat ${TEMP_FILE_PATH}/current_ip.txt)" == "$(cat ${TEMP_FILE_PATH}/current_resolving.txt)" ]; then exit 1 else CURRENT_IP="$(cat ${TEMP_FILE_PATH}/current_ip.txt)" curl -k -X PUT "https://api.cloudflare.com/client/v4/zones/${CF_ZONE_ID}/dns_records/${CF_DNS_ID}" \ -H "X-Auth-Email:${EMAIL}" \ -H "X-Auth-Key:${CF_API_KEY}" \ -H "Content-Type: application/json" \ --data '{"type":"A","name":"'$DNS_RECORD'","content":"'$CURRENT_IP'","ttl":1,"proxied":false}' fi
2018年04月24日
8,153 阅读
0 评论
0 点赞