forked from buzzhub/lsyupdate
add check_config.sh
This commit is contained in:
parent
f23371b550
commit
a426487523
70
lsy-frpc/data/lsyfrpc/check_config.sh
Normal file
70
lsy-frpc/data/lsyfrpc/check_config.sh
Normal file
@ -0,0 +1,70 @@
|
||||
#!/bin/bash
|
||||
|
||||
# FRPC 配置目录和文件路径
|
||||
FRPC_FILE="/data/lsyfrpc/frpc"
|
||||
FRPC_DIR="/data/lsyfrpc"
|
||||
CONFIG_FILE="$FRPC_DIR/frpc.ini"
|
||||
|
||||
# 云端接口获取当前端口和 MAC 地址
|
||||
function get_cloud_config() {
|
||||
mac_address=$(cat /sys/class/net/eth0/address)
|
||||
echo "MAC Address: $mac_address"
|
||||
|
||||
# 尝试获取云端端口,最多重试 3 次
|
||||
retries=3
|
||||
for ((i=1; i<=retries; i++)); do
|
||||
response=$(curl -s -X 'POST' \
|
||||
'https://frp-box.jxm.cool/request_port/' \
|
||||
-H 'accept: application/json' \
|
||||
-H 'Authorization: Basic NTI0NzgxNTctMjY1Zi00ZGNjLWE0NDMtODE0YzJhMDMxYjhjOmM2ZDI3Nzc1LTJhMDgtNDkyZS1iMTExLTg5YWQzZDY5ZTliMA==' \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d "{\"mac_address\": \"$mac_address\"}")
|
||||
|
||||
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."
|
||||
if [ "$i" -eq "$retries" ]; then
|
||||
echo "[ERROR] Max retries reached. Exiting."
|
||||
exit 1
|
||||
fi
|
||||
sleep 5 # 等待 5 秒后再重试
|
||||
fi
|
||||
done
|
||||
|
||||
cloud_mac_address="$mac_address-v1"
|
||||
echo "Cloud MAC Address: $cloud_mac_address"
|
||||
echo "Cloud Port: $cloud_port"
|
||||
}
|
||||
|
||||
# 检查 FRPC 配置是否与云端一致
|
||||
function check_config() {
|
||||
local cloud_port="$1"
|
||||
local cloud_mac_address="$2"
|
||||
|
||||
# 从配置文件中读取现有的 MAC 地址和端口
|
||||
current_mac_address=$(grep -o '\[.*\]' "$CONFIG_FILE" | tr -d '[]')
|
||||
current_port=$(grep -o 'remote_port = [0-9]*' "$CONFIG_FILE" | awk '{print $3}')
|
||||
|
||||
echo "Current MAC Address in frpc.ini: $current_mac_address"
|
||||
echo "Current Port in frpc.ini: $current_port"
|
||||
|
||||
# 比较配置文件中的 MAC 地址和端口是否与云端匹配
|
||||
if [ "$current_mac_address" != "$cloud_mac_address" ] || [ "$current_port" != "$cloud_port" ]; then
|
||||
echo "[INFO] Configuration mismatch detected. Re-running install.sh..."
|
||||
sudo /bin/bash /path/to/install.sh
|
||||
else
|
||||
echo "[INFO] Configuration is up to date."
|
||||
fi
|
||||
}
|
||||
|
||||
# 主函数,获取云端配置并检查配置
|
||||
main() {
|
||||
get_cloud_config
|
||||
check_config "$cloud_port" "$cloud_mac_address"
|
||||
}
|
||||
|
||||
main
|
||||
@ -44,6 +44,7 @@ After=network.target
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStartPre=/bin/mkdir -p "$FRPC_DIR/var/run/frp/"
|
||||
ExecStartPre=/bin/bash "$FRPC_DIR/check_config.sh"
|
||||
ExecStart="$FRPC_FILE" -c "$FRPC_DIR/frpc.ini"
|
||||
PIDFile="$FRPC_DIR/var/run/frp/frpc.pid"
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user