Files
linux-mirror-browser/status_monitor.sh

78 lines
2.8 KiB
Bash
Executable File
Raw 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
# 状态监控和执行脚本
# 监控 /api/status根据状态执行相应操作并循环
BASE_URL="http://localhost:3000"
STATUS_ENDPOINT="/api/status"
SETSTATUS_ENDPOINT="/api/setstatus"
REPO_DIR="/Users/hokori/code/html/mirrors/linux-mirror-browser"
echo "=== 状态监控脚本启动 ==="
echo "监控地址: $BASE_URL$STATUS_ENDPOINT"
echo "仓库目录: $REPO_DIR"
echo "注意: 脚本运行时不写入日志文件"
echo
while true; do
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$TIMESTAMP] 检查状态..."
# 获取状态
STATUS_RESPONSE=$(curl -s "$BASE_URL$STATUS_ENDPOINT")
# 解析状态值
if echo "$STATUS_RESPONSE" | grep -q '"status":1'; then
echo "[$TIMESTAMP] 状态: 1 (需要更新)"
# 切换到仓库目录并执行更新脚本
if [ -d "$REPO_DIR" ]; then
echo "[$TIMESTAMP] 切换到目录: $REPO_DIR"
cd "$REPO_DIR" || {
echo "[$TIMESTAMP] 错误: 无法切换到目录 $REPO_DIR"
sleep 30
continue
}
echo "[$TIMESTAMP] 执行更新脚本: ./update_repo.sh"
if [ -f "./update_repo.sh" ]; then
chmod +x ./update_repo.sh
# 执行更新脚本,输出直接显示在控制台
echo "[$TIMESTAMP] ===== 更新脚本开始执行 ====="
./update_repo.sh
UPDATE_RESULT=$?
echo "[$TIMESTAMP] ===== 更新脚本执行结束 ====="
if [ $UPDATE_RESULT -eq 0 ]; then
echo "[$TIMESTAMP] 更新脚本执行成功"
CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S.%3NZ")
echo "[$TIMESTAMP] 发送状态更新: s=ok, time=$CURRENT_TIME"
# 发送状态更新
SETSTATUS_RESPONSE=$(curl -s -X POST "$BASE_URL$SETSTATUS_ENDPOINT" \
-H "Content-Type: application/json" \
-d "{\"s\": \"ok\", \"time\": \"$CURRENT_TIME\"}")
echo "[$TIMESTAMP] 状态更新响应: $SETSTATUS_RESPONSE"
else
echo "[$TIMESTAMP] 更新脚本执行失败,退出码: $UPDATE_RESULT"
fi
else
echo "[$TIMESTAMP] 错误: 更新脚本 ./update_repo.sh 不存在"
fi
else
echo "[$TIMESTAMP] 错误: 仓库目录 $REPO_DIR 不存在"
fi
elif echo "$STATUS_RESPONSE" | grep -q '"status":0'; then
echo "[$TIMESTAMP] 状态: 0 (无需更新),无事可做"
else
echo "[$TIMESTAMP] 错误: 无法解析状态响应"
echo "[$TIMESTAMP] 响应内容: $STATUS_RESPONSE"
fi
echo "[$TIMESTAMP] 等待30秒..."
sleep 30
echo "[$TIMESTAMP] ------------------------"
done