需求是有时写Shell脚本是需要判断是否是国内服务器,来使用国内CDN或对国内友好的下载源。
正文
地址是:http://104.19.19.19/cdn-cgi/trace
104.19.19.19可以是任意一个CloudFlare CDN的IP
但尽量不要用1.1.1.1之类的国内被阻断的IP
访问http://104.19.19.19/cdn-cgi/trace是这样的
-
fl=12f505
-
h=104.19.19.19
-
ip=59.42.75.75
-
ts=1615783919.891
-
visit_scheme=http
-
uag=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
-
colo=LAX
-
http=http/1.1
-
loc=CN
-
tls=off
-
sni=off
-
warp=off
-
gateway=off
这里第3行的ip=59.42.75.75就是本机公网IP,第10行的loc=CN就是地区
使用它们的方法
获取IP:curl -s http://104.19.19.19/cdn-cgi/trace|grep ip|cut -d '=' -f 2
获取地区:curl -s http://104.19.19.19/cdn-cgi/trace|grep loc|cut -d '=' -f 2
当然,你要使用别的,将上面的命令改一下grep ip这里的ip就行了,比如改成uag就是获取UA
shell脚本使用示例
-
#!/bin/bash
-
ip=$(curl –s http://104.19.19.19/cdn-cgi/trace|grep ip|cut -d ‘=’ -f 2)
-
loc=$(curl –s http://104.19.19.19/cdn-cgi/trace|grep loc|cut -d ‘=’ -f 2)
-
echo 你的IP:${ip},你的地区:${loc}
-
if [ “${loc}” == “CN” ]; then
-
# 如果是国内地区执行的命令
-
echo “is China”
-
else
-
# 如果不是国内地区执行的命令
-
echo “no China”
-
fi