~优化DDNS脚本

This commit is contained in:
juewuy
2025-12-10 20:56:27 +08:00
parent d9f7cc61ec
commit 05872c8b81

View File

@@ -11,6 +11,7 @@ echo -e "TG群\033[36;4mhttps://t.me/ShellCrash\033[0m"
add_ddns() { add_ddns() {
cat >>$ddns_dir <<EOF cat >>$ddns_dir <<EOF
config service '$service' config service '$service'
option enabled '1' option enabled '1'
option force_unit 'hours' option force_unit 'hours'
@@ -61,23 +62,18 @@ set_ddns() {
} }
set_service() { set_service() {
services_dir=/etc/ddns/$services services_dir=/etc/ddns/$serv
if [ -s $services_dir ];then [ -s $services_dir ] || services_dir=/usr/share/ddns/list
row=2
else
services_dir=/usr/share/ddns/list
row=1
fi
echo ----------------------------------------------- echo -----------------------------------------------
echo -e "\033[32m请选择服务提供商\033[0m" echo -e "\033[32m请选择服务提供商\033[0m"
cat $services_dir | grep -v '^#' | awk -F "[\"]" -v i="$row" '{print " "NR" " $i}' cat $services_dir | grep -v '^#' | awk '{print " "NR" " $1}'
nr=$(cat $services_dir | grep -v '^#' | wc -l) nr=$(cat $services_dir | grep -v '^#' | wc -l)
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
if [ -z "$num" ]; then if [ -z "$num" ]; then
i= i=
elif [ "$num" -gt 0 -a "$num" -lt $nr ]; then elif [ "$num" -gt 0 -a "$num" -lt $nr ]; then
service=$(cat $services_dir | grep -v '^#' | awk -F "[\".]" -v i="$row" '{print " "NR" " $i}' | sed -n "$num"p) service_name=$(cat $services_dir | grep -v '^#' | awk '{print $1}' | sed -n "$num"p | sed 's/"//g')
service_name=$(cat $services_dir | grep -v '^#' | awk -F "[\"]" -v i="$row" '{print " "NR" " $i}' | sed -n "$num"p) service=$(echo $service_name | sed 's/\./_/g')
set_ddns set_ddns
else else
echo "输入错误,请重新输入!" echo "输入错误,请重新输入!"
@@ -96,11 +92,11 @@ network_type() {
i= i=
elif [ "$num" = 1 ]; then elif [ "$num" = 1 ]; then
use_ipv6=0 use_ipv6=0
services=services serv=services
set_service set_service
elif [ "$num" = 2 ]; then elif [ "$num" = 2 ]; then
use_ipv6=1 use_ipv6=1
services=services_ipv6 serv=services_ipv6
set_service set_service
else else
echo "输入错误,请重新输入!" echo "输入错误,请重新输入!"
@@ -117,6 +113,7 @@ rev_service() {
echo -e " 2 编辑当前服务\033[0m" echo -e " 2 编辑当前服务\033[0m"
echo -e " 3 $enabled_b当前服务" echo -e " 3 $enabled_b当前服务"
echo -e " 4 移除当前服务" echo -e " 4 移除当前服务"
echo -e " 5 查看运行日志"
echo -e " 0 返回上级菜单" echo -e " 0 返回上级菜单"
echo ----------------------------------------------- echo -----------------------------------------------
read -p "请输入对应数字 > " num read -p "请输入对应数字 > " num
@@ -138,6 +135,10 @@ rev_service() {
elif [ "$num" = 4 ]; then elif [ "$num" = 4 ]; then
uci delete ddns.$service uci delete ddns.$service
uci commit ddns.$service uci commit ddns.$service
elif [ "$num" = 5 ]; then
echo -----------------------------------------------
cat /var/log/ddns/$service.log 2>/dev/null
sleep 1
fi fi
} }
@@ -152,7 +153,7 @@ load_ddns() {
nr=$((nr + 1)) nr=$((nr + 1))
enabled=$(uci show ddns.$service 2>/dev/null | grep 'enabled' | awk -F "=" '{print $2}' | tr -d "'\"") enabled=$(uci show ddns.$service 2>/dev/null | grep 'enabled' | awk -F "=" '{print $2}' | tr -d "'\"")
domain=$(uci show ddns.$service 2>/dev/null | grep 'domain' | awk -F "=" '{print $2}' | tr -d "'\"") domain=$(uci show ddns.$service 2>/dev/null | grep 'domain' | awk -F "=" '{print $2}' | tr -d "'\"")
local_ip=$(sed '1!G;h;$!d' /var/log/ddns/$service.log 2>/dev/null | grep -E 'Update successful - IP' | tail -1 | awk -F "'" '{print $2}' | tr -d "'\"") local_ip=$(sed '1!G;h;$!d' /var/log/ddns/$service.log 2>/dev/null | grep -E 'Registered IP' | tail -1 | awk -F "'" '{print $2}' | tr -d "'\"")
echo -e " $nr $domain $enabled $local_ip" echo -e " $nr $domain $enabled $local_ip"
done done
echo -e " $((nr + 1)) 添加DDNS服务" echo -e " $((nr + 1)) 添加DDNS服务"