feat: 添加wg保活指令
This commit is contained in:
57
wg-keepalive.sh
Normal file
57
wg-keepalive.sh
Normal 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
|
||||||
Reference in New Issue
Block a user