From 72c22ffc6efddd50a860bd165f6eddec0a27e7a9 Mon Sep 17 00:00:00 2001 From: zqiushi Date: Thu, 9 Jan 2025 15:10:53 +0800 Subject: [PATCH] 1 --- lsy-frpc/data/lsyfrpc/check_config.sh | 41 ++++++++++++--------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/lsy-frpc/data/lsyfrpc/check_config.sh b/lsy-frpc/data/lsyfrpc/check_config.sh index 6edf109..1d56178 100755 --- a/lsy-frpc/data/lsyfrpc/check_config.sh +++ b/lsy-frpc/data/lsyfrpc/check_config.sh @@ -11,7 +11,7 @@ function get_cloud_config() { mac_address=$(cat /sys/class/net/eth0/address) echo "MAC Address: $mac_address" - # 尝试获取云端端口,最多重试 5 次 + # 尝试获取云端端口,最多重试 3 次 retries=3 for ((i=1; i<=retries; i++)); do response=$(curl -s -X 'POST' \ @@ -21,11 +21,10 @@ function get_cloud_config() { -H 'Content-Type: application/json' \ -d "{\"mac_address\": \"$mac_address\"}") - echo "Response: $response" + echo "Response: $response" cloud_port=$(echo "$response" | grep -o '"port":[0-9]*' | awk -F: '{print $2}') if [ -n "$cloud_port" ]; then - # 成功获取到端口 break else echo "[ERROR] Failed to get port from the cloud. Retry $i of $retries." @@ -33,7 +32,7 @@ function get_cloud_config() { echo "[ERROR] Max retries reached. Exiting." exit 1 fi - sleep 10 # 等待 10 秒后再重试 + sleep 10 fi done @@ -47,18 +46,15 @@ function check_config() { local cloud_port="$1" local cloud_mac_address="$2" - # 从配置文件中读取现有的 MAC 地址和端口 - current_mac_address=$(grep -o '\[.*\]' "$CONFIG_FILE" | tr -d '[]' | xargs) # 用 xargs 去掉两端空格 - current_port=$(grep -o 'remote_port = [0-9]*' "$CONFIG_FILE" | awk '{print $3}' | xargs) # 用 xargs 去掉两端空格 - - # 输出调试信息 + current_mac_address=$(grep -Eo '^\[[a-f0-9:-]*-v1\]' "$CONFIG_FILE" | tr -d '[]') + current_port=$(grep -o 'remote_port = [0-9]*' "$CONFIG_FILE" | awk '{print $3}' | xargs) + echo "Current MAC Address in frpc.ini: '$current_mac_address' '$cloud_mac_address'" echo "Current Port in frpc.ini: '$current_port' '$cloud_port'" - # 比较配置文件中的 MAC 地址和端口是否与云端匹配 if [ "$current_mac_address" != "$cloud_mac_address" ] || [ "$current_port" != "$cloud_port" ]; then - echo "[INFO] Configuration mismatch detected. Re-running install.sh..." - cat > "$FRPC_DIR/frpc.ini" < "$CONFIG_FILE" </dev/null; then + echo "[INFO] Lock file exists and script is running (PID: $lock_pid). Exiting." + exit 0 + else + echo "[INFO] Stale lock file detected. Removing." + rm -f "$LOCK_FILE" + fi fi - # 创建锁文件 - touch "$LOCK_FILE" + echo $$ > "$LOCK_FILE" + trap "rm -f $LOCK_FILE" EXIT SIGHUP SIGINT SIGTERM SIGQUIT - # 设置脚本在退出时删除锁文件 - trap "rm -f $LOCK_FILE" EXIT - - # 主逻辑 get_cloud_config check_config "$cloud_port" "$cloud_mac_address" }