mirror of
https://github.com/m1ngsama/automa.git
synced 2025-12-24 10:51:20 +00:00
167 lines
4.5 KiB
Bash
Executable file
167 lines
4.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
LOG_FILE="./logs/mod-install-log.txt"
|
|
mkdir -p "$(dirname "$LOG_FILE")"
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 初始化日志文件
|
|
init_log() {
|
|
echo "==================================================" >"$LOG_FILE"
|
|
echo "Minecraft Mod 安装日志" >>"$LOG_FILE"
|
|
echo "开始时间: $(date)" >>"$LOG_FILE"
|
|
echo "==================================================" >>"$LOG_FILE"
|
|
echo "" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录系统信息
|
|
log_system_info() {
|
|
{
|
|
echo "=== 系统信息 ==="
|
|
echo "主机名: $(hostname)"
|
|
echo "操作系统: $(uname -s) $(uname -r)"
|
|
echo "架构: $(uname -m)"
|
|
|
|
# CPU 信息
|
|
if command -v nproc >/dev/null; then
|
|
echo "CPU 核心数: $(nproc)"
|
|
fi
|
|
|
|
if command -v lscpu >/dev/null; then
|
|
echo "CPU 型号: $(lscpu | grep "Model name" | cut -d: -f2 | xargs)"
|
|
fi
|
|
|
|
# 内存信息
|
|
if command -v free >/dev/null; then
|
|
echo "内存总量: $(free -h | grep Mem: | awk '{print $2}')"
|
|
echo "可用内存: $(free -h | grep Mem: | awk '{print $7}')"
|
|
fi
|
|
|
|
# 磁盘信息
|
|
echo "磁盘使用:"
|
|
df -h . | tail -1 | awk '{print " 总量: " $2 ", 可用: " $4 ", 使用率: " $5}'
|
|
|
|
# 网络信息
|
|
echo "公网 IP: $(curl -s ifconfig.me 2>/dev/null || echo "无法获取")"
|
|
echo ""
|
|
} >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录命令开始
|
|
log_start() {
|
|
local command_name="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
{
|
|
echo "╔═══════════════════════════════════════════════"
|
|
echo "║ 命令: $command_name"
|
|
echo "║ 开始时间: $timestamp"
|
|
echo "║ 工作目录: $(pwd)"
|
|
echo "║ 用户: $(whoami)"
|
|
echo "╚═══════════════════════════════════════════════"
|
|
echo ""
|
|
} >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录命令结束
|
|
log_end() {
|
|
local exit_code="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
local duration="${2:-0}"
|
|
|
|
{
|
|
echo ""
|
|
echo "╔═══════════════════════════════════════════════"
|
|
echo "║ 结束时间: $timestamp"
|
|
if [[ -n "$duration" && "$duration" != "0" ]]; then
|
|
echo "║ 执行时长: ${duration}秒"
|
|
fi
|
|
echo "║ 退出代码: $exit_code"
|
|
echo "║ 状态: $([ $exit_code -eq 0 ] && echo "成功" || echo "失败")"
|
|
echo "╚═══════════════════════════════════════════════"
|
|
echo ""
|
|
echo ""
|
|
} >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录信息(同时输出到屏幕和日志)
|
|
log_info() {
|
|
local message="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
echo -e "${BLUE}[INFO]${NC} $message"
|
|
echo "[$timestamp] [INFO] $message" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录成功
|
|
log_success() {
|
|
local message="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
echo -e "${GREEN}[SUCCESS]${NC} $message"
|
|
echo "[$timestamp] [SUCCESS] $message" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录警告
|
|
log_warning() {
|
|
local message="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
echo -e "${YELLOW}[WARNING]${NC} $message"
|
|
echo "[$timestamp] [WARNING] $message" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录错误
|
|
log_error() {
|
|
local message="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
echo -e "${RED}[ERROR]${NC} $message"
|
|
echo "[$timestamp] [ERROR] $message" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 记录命令输出
|
|
log_command() {
|
|
local command="$1"
|
|
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
|
|
|
{
|
|
echo "[$timestamp] [COMMAND] 执行: $command"
|
|
echo "[$timestamp] [OUTPUT]"
|
|
} >>"$LOG_FILE"
|
|
|
|
# 执行命令并捕获输出
|
|
eval "$command" 2>&1 | while IFS= read -r line; do
|
|
echo "[$timestamp] [OUTPUT] $line" >>"$LOG_FILE"
|
|
echo "$line" # 同时输出到屏幕
|
|
done
|
|
|
|
local exit_code=${PIPESTATUS[0]}
|
|
echo "[$timestamp] [COMMAND] 退出代码: $exit_code" >>"$LOG_FILE"
|
|
return $exit_code
|
|
}
|
|
|
|
# 记录分隔线
|
|
log_separator() {
|
|
echo "--------------------------------------------------" >>"$LOG_FILE"
|
|
}
|
|
|
|
# 显示日志位置
|
|
show_log_location() {
|
|
log_info "详细日志已保存到: $LOG_FILE"
|
|
log_info "查看日志: tail -f $LOG_FILE"
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
if [[ "$1" == "init" ]]; then
|
|
init_log
|
|
log_system_info
|
|
fi
|
|
}
|
|
|
|
# 如果直接执行此脚本,则初始化
|
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
|
main "$@"
|
|
fi
|