feat: 添加wg保活指令

This commit is contained in:
JayHoo
2026-03-01 12:56:55 +08:00
commit 9ef722dcfc

57
wg-keepalive.sh Normal file
View File

@@ -0,0 +1,57 @@
#!/bin/bash
# 日志目录
LOG_DIR="/var/log/wg0"
# 如果日志目录不存在,则创建它 (需要 root 权限)
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR" 2>/dev/null
if [ $? -ne 0 ]; then
echo "无法创建日志目录 $LOG_DIR,请检查是否有 root 权限!"
exit 1
fi
fi
# 提示信息
echo "WireGuard 守护脚本已启动,将每 10 秒检测一次 172.18.1.1"
echo "运行日志将写入 $LOG_DIR 目录下,按天生成日志文件,并自动清理 3 天前的旧日志。"
# 主循环(在前台运行,适合用 Systemd 等服务管理器来守护)
while true; do
# 获取当前时间和当天的日志文件名
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
LOG_FILE="$LOG_DIR/$(date +%Y-%m-%d).log"
# -c 1: 发送一个包
# -W 2: 等待响应的最长时间为 2 秒 (Linux 系统下)
if ping -c 1 -W 2 172.18.1.1 >/dev/null 2>&1; then
echo "[$TIMESTAMP] PING 172.18.1.1 成功" >> "$LOG_FILE"
else
echo "[$TIMESTAMP] PING 172.18.1.1 失败,准备重启 wg0" >> "$LOG_FILE"
# 执行 wg-quick down 并将输出追加到日志
echo "[$TIMESTAMP] 执行: wg-quick down wg0" >> "$LOG_FILE"
wg-quick down wg0 >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "[$TIMESTAMP] wg-quick down wg0 执行成功" >> "$LOG_FILE"
else
echo "[$TIMESTAMP] wg-quick down wg0 执行失败" >> "$LOG_FILE"
fi
# 执行 wg-quick up 并将输出追加到日志
echo "[$TIMESTAMP] 执行: wg-quick up wg0" >> "$LOG_FILE"
wg-quick up wg0 >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "[$TIMESTAMP] wg-quick up wg0 执行成功" >> "$LOG_FILE"
else
echo "[$TIMESTAMP] wg-quick up wg0 执行失败" >> "$LOG_FILE"
fi
fi
# 每天清理一次 3 天前的日志文件
# 使用 find 命令查找 LOG_DIR 下超过 3 天mtime +2 表示 > 72 小时)的 .log 文件并删除
find "$LOG_DIR" -name "*.log" -type f -mtime +2 -exec rm -f {} \;
# 每 10 秒执行一次
sleep 10
done