Files
script/wg-keepalive.sh
2026-03-01 12:56:55 +08:00

58 lines
2.1 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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