由于上个仓库主线和分支差距过大且主线不再使用所以新建此仓库
This commit is contained in:
78
status_monitor.sh
Executable file
78
status_monitor.sh
Executable file
@@ -0,0 +1,78 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user