modify scripts
This commit is contained in:
75
tools/grammar_stat.sh
Normal file
75
tools/grammar_stat.sh
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
LOG_FILE="/usr/local/aigrammar/log/app.log"
|
||||||
|
PY_SCRIPT="/home/ubuntu/projects/devops/tools/send_to_wecom.py"
|
||||||
|
TODAY=$(date +%Y-%m-%d)
|
||||||
|
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
|
||||||
|
FILTERED_LOG="${LOG_FILE%.log}_${YESTERDAY}.log"
|
||||||
|
|
||||||
|
# Check if log file exists
|
||||||
|
if [ ! -f "$LOG_FILE" ]; then
|
||||||
|
echo "Error: Log file not found - $LOG_FILE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if Python script exists and is executable
|
||||||
|
if [ ! -f "$PY_SCRIPT" ]; then
|
||||||
|
echo "Error: Python script not found or not executable - $PY_SCRIPT" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create filtered log file
|
||||||
|
echo "Filtering yesterday's logs..."
|
||||||
|
#grep "$TODAY" "$LOG_FILE" > "$FILTERED_LOG"
|
||||||
|
grep "$YESTERDAY" "$LOG_FILE" > "$FILTERED_LOG"
|
||||||
|
|
||||||
|
# Check if filtered log has content
|
||||||
|
if [ ! -s "$FILTERED_LOG" ]; then
|
||||||
|
echo "Warning: No logs found for $YESTERDAY"
|
||||||
|
content="Date: $YESTERDAY\nNo log records found"
|
||||||
|
python3 "$PY_SCRIPT" "$content"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Filtered log created: $FILTERED_LOG"
|
||||||
|
|
||||||
|
# Statistics
|
||||||
|
echo "Calculating statistics..."
|
||||||
|
request_total=$(grep -E "\"level\":\"info\"" "$FILTERED_LOG" | grep "\"func\":\"main.parseToken\"" | wc -l)
|
||||||
|
grammar_total=$(grep -v "\"level\":\"debug\"" "$FILTERED_LOG" | grep "\"func\":\"main.GrammarHandler\"" | wc -l)
|
||||||
|
translate_total=$(grep -v "\"level\":\"debug\"" "$FILTERED_LOG" | grep "\"func\":\"main.TranslateHandler\"" | wc -l)
|
||||||
|
words_total=$(grep -v "\"level\":\"debug\"" "$FILTERED_LOG" | grep "\"func\":\"main.WordsHandler\"" | wc -l)
|
||||||
|
free_limit_total=$(grep -E "\"level\":\"warn\"" "$FILTERED_LOG" | grep "\"func\":\"main.queryUserBenefits\"" | wc -l)
|
||||||
|
error_total=$(grep "\"level\":\"error\"" "$FILTERED_LOG" | wc -l)
|
||||||
|
|
||||||
|
# Generate content to send
|
||||||
|
content="Date: $YESTERDAY
|
||||||
|
Total Requests: $request_total
|
||||||
|
Grammar Check Requests: $grammar_total
|
||||||
|
Translation Requests: $translate_total
|
||||||
|
Words Requests: $words_total
|
||||||
|
Free Quota Exceeded: $free_limit_total
|
||||||
|
Total Errors: $error_total"
|
||||||
|
|
||||||
|
# Print statistics
|
||||||
|
echo "===== Statistics ====="
|
||||||
|
echo -e "$content"
|
||||||
|
|
||||||
|
# Send to WeCom
|
||||||
|
echo "Sending to WeChat Work..."
|
||||||
|
python3 "$PY_SCRIPT" "$content"
|
||||||
|
|
||||||
|
# Check result
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Successfully sent to WeChat Work"
|
||||||
|
else
|
||||||
|
echo "Error: Failed to send to WeChat Work" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove tmp logfile
|
||||||
|
rm -rf "$FILTERED_LOG"
|
||||||
|
|
||||||
|
echo "Script execution completed"
|
||||||
|
exit 0
|
||||||
165
tools/monitor.sh
Normal file
165
tools/monitor.sh
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[0;33m'
|
||||||
|
NC='\033[0m' # 无颜色
|
||||||
|
|
||||||
|
# 定义命令映射和函数
|
||||||
|
declare -A COMMAND_MAP
|
||||||
|
declare -a COMMAND_ORDER # 记录命令注册顺序,用于帮助信息
|
||||||
|
|
||||||
|
# 注册命令函数并添加到映射
|
||||||
|
register_command() {
|
||||||
|
local cmd_name=$1
|
||||||
|
local cmd_desc=$2
|
||||||
|
COMMAND_MAP[$cmd_name]=$cmd_desc
|
||||||
|
COMMAND_ORDER+=($cmd_name)
|
||||||
|
}
|
||||||
|
|
||||||
|
# 执行远程命令的通用函数
|
||||||
|
execute_remote() {
|
||||||
|
local server=$1
|
||||||
|
local user=$2
|
||||||
|
local ssh_opts=$3
|
||||||
|
local cmd=$4
|
||||||
|
local desc=$5
|
||||||
|
|
||||||
|
echo -e "${YELLOW}执行命令: ${desc}${NC}"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo -e "${YELLOW}服务器: ${user}@${server}${NC}"
|
||||||
|
|
||||||
|
# 执行远程命令
|
||||||
|
RESULT=$(ssh $ssh_opts $user@$server "$cmd")
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
# 输出结果
|
||||||
|
if [ $EXIT_CODE -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}命令执行成功${NC}"
|
||||||
|
echo "$RESULT"
|
||||||
|
|
||||||
|
# 执行本地脚本并将远程命令结果作为输入
|
||||||
|
python3 ./send_to_wecom.py "$RESULT"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e "${RED}命令执行失败,退出代码: $EXIT_CODE${NC}"
|
||||||
|
return $EXIT_CODE
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 定义具体命令函数
|
||||||
|
cmd_javbus() {
|
||||||
|
local SERVER="170.106.191.35"
|
||||||
|
local USER="root"
|
||||||
|
local SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
||||||
|
|
||||||
|
execute_remote "$SERVER" "$USER" "$SSH_OPTS" \
|
||||||
|
"cd /root/projects/resources && python3 -m src.monitor.check_javbus" \
|
||||||
|
"检查服务状态"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 定义具体命令函数
|
||||||
|
cmd_check_status() {
|
||||||
|
local SERVER="170.106.191.35"
|
||||||
|
local USER="root"
|
||||||
|
local SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
||||||
|
|
||||||
|
execute_remote "$SERVER" "$USER" "$SSH_OPTS" \
|
||||||
|
"cd ~/resources/aabook/src/ && python3 ./check_status.py" \
|
||||||
|
"检查服务状态"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_restart_service() {
|
||||||
|
local SERVER="170.106.191.35"
|
||||||
|
local USER="root"
|
||||||
|
local SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
||||||
|
|
||||||
|
execute_remote "$SERVER" "$USER" "$SSH_OPTS" \
|
||||||
|
"cd ~/resources/aabook/src/ && python3 ./restart_service.py" \
|
||||||
|
"重启服务"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_fetch_data() {
|
||||||
|
local SERVER="170.106.191.36" # 示例:使用不同的服务器
|
||||||
|
local USER="admin" # 示例:使用不同的用户
|
||||||
|
local SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
||||||
|
|
||||||
|
execute_remote "$SERVER" "$USER" "$SSH_OPTS" \
|
||||||
|
"cd ~/resources/aabook/src/ && python3 ./fetch_data.py" \
|
||||||
|
"获取最新数据"
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd_backup_db() {
|
||||||
|
local SERVER="170.106.191.35"
|
||||||
|
local USER="root"
|
||||||
|
local SSH_OPTS="-o StrictHostKeyChecking=no -o ConnectTimeout=10"
|
||||||
|
|
||||||
|
execute_remote "$SERVER" "$USER" "$SSH_OPTS" \
|
||||||
|
"cd ~/resources/aabook/db/ && ./backup_db.sh" \
|
||||||
|
"备份数据库"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 注册命令
|
||||||
|
register_command "check" "检查服务状态"
|
||||||
|
register_command "restart" "重启服务"
|
||||||
|
register_command "fetch" "获取最新数据"
|
||||||
|
register_command "backup" "备份数据库"
|
||||||
|
register_command "javbus" "检查服务状态"
|
||||||
|
|
||||||
|
# 显示帮助信息
|
||||||
|
show_help() {
|
||||||
|
echo "用法: $0 [命令1] [命令2] [...]"
|
||||||
|
echo "可用命令:"
|
||||||
|
|
||||||
|
for cmd in "${COMMAND_ORDER[@]}"; do
|
||||||
|
printf " %-10s %s\n" "$cmd" "${COMMAND_MAP[$cmd]}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "示例:"
|
||||||
|
echo " $0 check fetch"
|
||||||
|
echo " $0 backup"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主函数
|
||||||
|
main() {
|
||||||
|
# 检查是否提供了命令参数
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local success=true
|
||||||
|
|
||||||
|
# 处理每个命令参数
|
||||||
|
for cmd in "$@"; do
|
||||||
|
# 检查命令是否存在
|
||||||
|
if [[ -z "${COMMAND_MAP[$cmd]}" ]]; then
|
||||||
|
echo -e "${RED}错误: 未知命令 '$cmd'${NC}"
|
||||||
|
show_help
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 执行对应的命令函数
|
||||||
|
cmd_${cmd}
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
success=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
done
|
||||||
|
|
||||||
|
# 输出总体执行结果
|
||||||
|
if [ "$success" = true ]; then
|
||||||
|
echo -e "${GREEN}所有命令执行成功${NC}"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo -e "${RED}部分命令执行失败${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# 执行主函数
|
||||||
|
main "$@"
|
||||||
Reference in New Issue
Block a user