需求是有时写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