
前天给京东云路由器刷了这个DWRT,开启了clash,然后DDNS插件获取的ip就变成了代理ip,导致无法正常外网访问我局域网中部署的服务,DDNS插件设置从wan口获取ip一直无法保存,也不知道是插件的BUG还是固件的BUG,没实力排错,只能换个法子实现😅
具体实现办法:在不走代理的服务器上定时运行shell来更新DDNS,并且为了贯彻“能用鼠标点就不要敲键盘”的思想,定时用1panel面板的定时任务实现
以下代码来自chatgpt
#!/bin/bash
# 假设你已经为以下变量赋了值
USERNAME="your_username"
PASSWORD="your_password"
YOURHOSTNAME="your_hostname"
# 获取当前公网IP地址
WANIP=$(curl -m 5 -sS -X GET http://checkip.dyndns.com | grep -oP 'Current IP Address: \d+\.\d+\.\d+\.\d+' | cut -d ' ' -f 4)
# 检查WANIP变量是否成功获取到IP地址
if [ -z "$WANIP" ]; then
echo "Error: Unable to retrieve WAN IP address."
exit 1
fi
# 构建请求的URL
URL="http://${USERNAME}:${PASSWORD}@ddns.oray.com/ph/update?hostname=${YOURHOSTNAME}&myip=${WANIP}"
# 使用curl发送请求到DDNS提供商,并分别获取HTTP状态码和响应内容
HTTP_STATUS=$(curl -sS -o /dev/stdout -w "%{http_code}" -u "${USERNAME}:${PASSWORD}" "${URL}")
RESPONSE=$(curl -sS -u "${USERNAME}:${PASSWORD}" "${URL}")
# 输出HTTP状态码和响应内容
echo "HTTP Response Code: $HTTP_STATUS"
echo "Response: $RESPONSE"
# 从RESPONSE中分离状态码和IP地址
RESPONSE_STATUS=$(echo "$RESPONSE" | awk '{print $1}')
IP_ADDRESS=$(echo "$RESPONSE" | awk '{print $2}')
HTTP_RESPONSE_IP=$(echo "$RESPONSE" | awk -F'[^0-9]*$' '{print $1}')
# 输出分离后的状态码和IP地址
echo "Response Status: $RESPONSE_STATUS"
echo "IP Address: $IP_ADDRESS"
# 根据返回的响应状态判断操作结果
case "$RESPONSE_STATUS" in
"good")
echo "DDNS update successful. Your IP has been updated to: $IP_ADDRESS"
;;
"nochg")
echo "DDNS update successful, but no IP change."
;;
# 处理其他响应状态...
*)
echo "Unexpected response: $RESPONSE_STATUS"
;;
esac
阅读量
loading...