指令获取本机ip

2024-8-5 学长

通过curl ipinfo.io获得

不加/ip获得更多信息

curl https://v6.ipinfo.io/ip

curl https://ipinfo.io/ip


想手撕cloudflare的api做AAAA

一开始用的docker是 https://hub.docker.com/r/oznu/cloudflare-ddns/


docker run \
  --name ddns \
  --restart=always \
  -e API_KEY=具体API \
  -e ZONE=具体域名 \
  -e SUBDOMAIN=相关子域名\
  -e RRTYPE=A \
  -e CRON="*/15 * * * *" \
  oznu/cloudflare-ddns


上面的A的IPv4跑起来没问题,只是第一次跑的话,ssh指令结束后docker也就停了,得去portainer重新运行下

但是IPv6就更新不到,在oznu/cloudflare-ddns的说明中看到得启用docker的IPv6。。。


docker run \
  --name ddns_v6 \
  --restart=always \
  -e API_KEY=具体API  \
  -e ZONE=具体域名 \
  -e SUBDOMAIN=相关子域名\
  -e RRTYPE=AAAA \
  -e CRON="*/15 * * * *" \
  oznu/cloudflare-ddns

docker做AAAA解析需要docker开启ipv6支持 实际开启很麻烦,默认的桥接就很多限制而且必须是公网分配下来的ip局域网的v6没法做桥接,还得在/80以内 以上说法参考自 https://www.rectcircle.cn/posts/docker-ipv6/



最简单使用“通过 IPv6NAT 方式支持 IPv6”但是得通过robbertkl/docker-ipv6nat。

就很没效率,实际执行的只是corntab 固定时间把 IP地址更新到赛博大善人那


首先旧版本的是使用X-Auth-Email和X-Auth-Key

新版本使用的是Authorization: Bearer


第一步获得zones的ID

api=具体API


剩下的就是怎么处理json的问题了,一般选择的是python,为了做到最简洁尝试使用sed grep awk cut进行处理。。。直接字符串截取,按长度。。。

https://www.cnblogs.com/stevensfollower/p/5093001.html


zones=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones" \
     -H "Authorization: Bearer $api" \
     -H "Content-Type:application/json")
//通过$zones查询到具体的zones的情况,然后通过awk找到对应字符的位置

p1=$(awk -v a="$zones" -v b="id" 'BEGIN{print index(a,b)}')
zones=${zones:$(expr $p1 + 4):32}

//id对应的位置再向后4个,后面的32位就是zone的ID了

或者合并一行写:

zones=${zones:$(expr $(awk -v a="$zones" -v b="id" 'BEGIN{print index(a,b)}') + 4):32}


//获得具体的dns记录

dns_records=$(curl -sX GET "https://api.cloudflare.com/client/v4/zones/$zones/dns_records" \
     -H "Authorization: Bearer $api" \
     -H "Content-Type:application/json")

//继续对DNS记录进行处理找到具体的记录

手机版 | RSS | FEED

苏ICP备16066175号