From dc001971673de692e2174f4db0a4cb940e7f3090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=AC=E5=93=A5=E4=BE=83=E4=BE=83=E4=BE=83ygkkk?= <121604513+yonggekkk@users.noreply.github.com> Date: Wed, 22 Jan 2025 09:49:42 +0800 Subject: [PATCH] Update serv00keep.sh --- serv00keep.sh | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/serv00keep.sh b/serv00keep.sh index 258a935..fc096b5 100644 --- a/serv00keep.sh +++ b/serv00keep.sh @@ -113,7 +113,87 @@ EOF fi } -# Download Dependency Files +uuidport(){ +if [[ -z "$UUID" ]]; then +UUID=$(uuidgen -r) +fi +if [[ -z "$vless_port" ]] || [[ -z "$vmess_port" ]] || [[ -z "$hy2_port" ]]; then +check_port () { +port_list=$(devil port list) +tcp_ports=$(echo "$port_list" | grep -c "tcp") +udp_ports=$(echo "$port_list" | grep -c "udp") + +if [[ $tcp_ports -ne 2 || $udp_ports -ne 1 ]]; then + echo "端口数量不符合要求,正在调整..." + + if [[ $tcp_ports -gt 2 ]]; then + tcp_to_delete=$((tcp_ports - 2)) + echo "$port_list" | awk '/tcp/ {print $1, $2}' | head -n $tcp_to_delete | while read port type; do + devil port del $type $port + echo "已删除TCP端口: $port" + done + fi + + if [[ $udp_ports -gt 1 ]]; then + udp_to_delete=$((udp_ports - 1)) + echo "$port_list" | awk '/udp/ {print $1, $2}' | head -n $udp_to_delete | while read port type; do + devil port del $type $port + echo "已删除UDP端口: $port" + done + fi + + if [[ $tcp_ports -lt 2 ]]; then + tcp_ports_to_add=$((2 - tcp_ports)) + tcp_ports_added=0 + while [[ $tcp_ports_added -lt $tcp_ports_to_add ]]; do + tcp_port=$(shuf -i 10000-65535 -n 1) + result=$(devil port add tcp $tcp_port 2>&1) + if [[ $result == *"succesfully"* ]]; then + echo "已添加TCP端口: $tcp_port" + if [[ $tcp_ports_added -eq 0 ]]; then + tcp_port1=$tcp_port + else + tcp_port2=$tcp_port + fi + tcp_ports_added=$((tcp_ports_added + 1)) + else + echo "端口 $tcp_port 不可用,尝试其他端口..." + fi + done + fi + + if [[ $udp_ports -lt 1 ]]; then + while true; do + udp_port=$(shuf -i 10000-65535 -n 1) + result=$(devil port add udp $udp_port 2>&1) + if [[ $result == *"succesfully"* ]]; then + echo "已添加UDP端口: $udp_port" + break + else + echo "端口 $udp_port 不可用,尝试其他端口..." + fi + done + fi + echo "端口已调整完成,将断开ssh连接" + devil binexec on >/dev/null 2>&1 + kill -9 $(ps -o ppid= -p $$) >/dev/null 2>&1 +else + tcp_ports=$(echo "$port_list" | awk '/tcp/ {print $1}') + tcp_port1=$(echo "$tcp_ports" | sed -n '1p') + tcp_port2=$(echo "$tcp_ports" | sed -n '2p') + udp_port=$(echo "$port_list" | awk '/udp/ {print $1}') + + echo "当前TCP端口: $tcp_port1 和 $tcp_port2" + echo "当前UDP端口: $udp_port" +fi + +export vless_port=$tcp_port1 +export vmess_port=$tcp_port2 +export hy2_port=$udp_port +} +fi +} + download_and_run_singbox() { if [ ! -s sb.txt ] && [ ! -s ag.txt ]; then ARCH=$(uname -m) && DOWNLOAD_DIR="." && mkdir -p "$DOWNLOAD_DIR" && FILE_INFO=() @@ -1000,6 +1080,7 @@ install_singbox() { cd $WORKDIR read_ip argo_configure +uuidport download_and_run_singbox get_links }