Compare commits
No commits in common. "main" and "master" have entirely different histories.
293
app/java/run.sh
293
app/java/run.sh
|
|
@ -1,293 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# Java应用管理脚本 v2.0
|
||||
# 功能:启动/停止/重启/状态检查/日志查看/升级/备份
|
||||
# ==============================================
|
||||
|
||||
# --------------------------
|
||||
# 配置区(请根据实际情况修改)
|
||||
# --------------------------
|
||||
APP_NAME="snailjob-server" # 应用名称
|
||||
APP_DIR="../lib" # 应用目录(支持绝对路径)
|
||||
JAR_NAME="ruoyi-snailjob-server.jar" # JAR文件名
|
||||
JAVA_OPTS="-Xms256m -Xmx512m -XX:+UseG1GC -Dfile.encoding=UTF-8" # JVM参数
|
||||
LOG_FILE="${APP_DIR}/app.log" # 日志文件路径
|
||||
PID_FILE="${APP_DIR}/app.pid" # PID文件路径
|
||||
MAX_LOG_SIZE=10 # 日志轮转大小(MB)
|
||||
BACKUP_DIR="${APP_DIR}/backup" # 备份目录
|
||||
WAIT_STOP_TIMEOUT=30 # 停止等待超时(秒)
|
||||
|
||||
# --------------------------
|
||||
# 初始化检查
|
||||
# --------------------------
|
||||
init_check() {
|
||||
# 检查Java环境
|
||||
if ! command -v java &> /dev/null; then
|
||||
echo "[ERROR] Java未安装!请先安装JDK"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查目录是否存在
|
||||
if [ ! -d "$APP_DIR" ]; then
|
||||
echo "[ERROR] 应用目录不存在: $APP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查JAR文件是否存在
|
||||
if [ ! -f "${APP_DIR}/${JAR_NAME}" ]; then
|
||||
echo "[ERROR] JAR文件不存在: ${APP_DIR}/${JAR_NAME}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 创建备份目录
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 日志轮转
|
||||
# --------------------------
|
||||
rotate_log() {
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
log_size=$(du -m "$LOG_FILE" | cut -f1)
|
||||
if [ "$log_size" -gt "$MAX_LOG_SIZE" ]; then
|
||||
echo "正在轮转日志文件..."
|
||||
timestamp=$(date +%Y%m%d%H%M%S)
|
||||
mv "$LOG_FILE" "${LOG_FILE}.$timestamp"
|
||||
gzip "${LOG_FILE}.$timestamp" -f
|
||||
mv "${LOG_FILE}.$timestamp.gz" "$BACKUP_DIR/"
|
||||
touch "$LOG_FILE"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 获取应用状态
|
||||
# --------------------------
|
||||
status() {
|
||||
if [ -f "$PID_FILE" ]; then
|
||||
pid=$(cat "$PID_FILE")
|
||||
if ps -p "$pid" > /dev/null; then
|
||||
echo "[INFO] $APP_NAME 正在运行 (PID: $pid)"
|
||||
return 0
|
||||
else
|
||||
echo "[WARN] PID文件存在但进程未运行,可能存在异常退出"
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
echo "[INFO] $APP_NAME 未运行"
|
||||
return 3
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 启动应用
|
||||
# --------------------------
|
||||
start() {
|
||||
init_check
|
||||
status >/dev/null 2>&1
|
||||
local running=$?
|
||||
|
||||
if [ $running -eq 0 ]; then
|
||||
echo "[WARN] $APP_NAME 已经在运行中 (PID: $(cat "$PID_FILE"))"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 清理无效PID文件
|
||||
if [ $running -eq 1 ]; then
|
||||
rm -f "$PID_FILE"
|
||||
fi
|
||||
|
||||
rotate_log
|
||||
|
||||
echo "正在启动 $APP_NAME..."
|
||||
cd "$APP_DIR" || exit 1
|
||||
|
||||
# 使用exec启动以便获取正确的PID
|
||||
nohup java $JAVA_OPTS -jar "$JAR_NAME" >> "$LOG_FILE" 2>&1 &
|
||||
local pid=$!
|
||||
|
||||
echo $pid > "$PID_FILE"
|
||||
echo "[SUCCESS] $APP_NAME 已启动 (PID: $pid)"
|
||||
echo "日志文件: $LOG_FILE"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 停止应用
|
||||
# --------------------------
|
||||
stop() {
|
||||
status >/dev/null 2>&1
|
||||
local running=$?
|
||||
|
||||
if [ $running -ne 0 ]; then
|
||||
echo "[WARN] $APP_NAME 未运行"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local pid=$(cat "$PID_FILE")
|
||||
echo "正在停止 $APP_NAME (PID: $pid)..."
|
||||
|
||||
# 先尝试优雅关闭
|
||||
kill $pid
|
||||
|
||||
# 等待进程退出
|
||||
local count=0
|
||||
while [ $count -lt $WAIT_STOP_TIMEOUT ]; do
|
||||
if ! ps -p $pid > /dev/null; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
((count++))
|
||||
done
|
||||
|
||||
# 强制终止
|
||||
if ps -p $pid > /dev/null; then
|
||||
echo "[WARN] 优雅关闭失败,尝试强制终止..."
|
||||
kill -9 $pid
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
rm -f "$PID_FILE"
|
||||
echo "[SUCCESS] $APP_NAME 已停止"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 重启应用
|
||||
# --------------------------
|
||||
restart() {
|
||||
stop
|
||||
sleep 2
|
||||
start
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 查看日志
|
||||
# --------------------------
|
||||
tail_log() {
|
||||
if [ ! -f "$LOG_FILE" ]; then
|
||||
echo "[ERROR] 日志文件不存在: $LOG_FILE"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "正在显示日志: $LOG_FILE (Ctrl+C 退出)"
|
||||
echo "--------------------------------------------------"
|
||||
tail -f "$LOG_FILE"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 备份应用
|
||||
# --------------------------
|
||||
backup() {
|
||||
local timestamp=$(date +%Y%m%d%H%M%S)
|
||||
local backup_file="${BACKUP_DIR}/${JAR_NAME%.*}_${timestamp}.jar"
|
||||
|
||||
echo "正在备份应用到: $backup_file"
|
||||
cp "${APP_DIR}/${JAR_NAME}" "$backup_file"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "[SUCCESS] 备份完成"
|
||||
return 0
|
||||
else
|
||||
echo "[ERROR] 备份失败"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 升级应用
|
||||
# --------------------------
|
||||
upgrade() {
|
||||
local new_jar="$JAR_NAME"
|
||||
local lib_dir="$APP_DIR"
|
||||
local backup_dir="${BACKUP_DIR}/lib"
|
||||
|
||||
# 检查新的JAR文件是否存在
|
||||
if [ ! -f "$new_jar" ]; then
|
||||
echo "[ERROR] 新的JAR文件不存在: $new_jar"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 检查lib目录是否存在
|
||||
if [ ! -d "$lib_dir" ]; then
|
||||
echo "[ERROR] lib目录不存在: $lib_dir"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 检查backup目录是否存在,不存在则创建
|
||||
mkdir -p "$backup_dir"
|
||||
|
||||
# 获取lib目录下原有的JAR文件名
|
||||
local old_jar=$(ls "$lib_dir" | grep -E "^${JAR_NAME%.jar}-[0-9]{14}\.jar$")
|
||||
if [ -z "$old_jar" ]; then
|
||||
old_jar="$JAR_NAME"
|
||||
fi
|
||||
|
||||
# 备份原有的JAR文件
|
||||
local timestamp=$(date +%Y%m%d%H%M%S)
|
||||
local backup_file="${backup_dir}/${old_jar%.jar}_${timestamp}.jar"
|
||||
cp "${lib_dir}/${old_jar}" "$backup_file"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "[SUCCESS] 备份原有JAR文件到: $backup_file"
|
||||
else
|
||||
echo "[ERROR] 备份原有JAR文件失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 复制新的JAR文件到lib目录
|
||||
cp "$new_jar" "$lib_dir/"
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "[SUCCESS] 升级JAR文件到: $lib_dir/$new_jar"
|
||||
else
|
||||
echo "[ERROR] 升级JAR文件失败"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# 删除旧的JAR文件(可选,如果保留旧版本则不需要删除)
|
||||
# rm -f "${lib_dir}/${old_jar}"
|
||||
# if [ $? -eq 0 ]; then
|
||||
# echo "[SUCCESS] 删除旧的JAR文件: ${lib_dir}/${old_jar}"
|
||||
# else
|
||||
# echo "[ERROR] 删除旧的JAR文件失败"
|
||||
# return 1
|
||||
# fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 主程序
|
||||
# --------------------------
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
restart)
|
||||
restart
|
||||
;;
|
||||
status)
|
||||
status
|
||||
;;
|
||||
log)
|
||||
tail_log
|
||||
;;
|
||||
backup)
|
||||
backup
|
||||
;;
|
||||
upgrade)
|
||||
upgrade
|
||||
;;
|
||||
*)
|
||||
echo "用法: $0 {start|stop|restart|status|log|backup|upgrade}"
|
||||
echo " start 启动应用"
|
||||
echo " stop 停止应用"
|
||||
echo " restart 重启应用"
|
||||
echo " status 查看状态"
|
||||
echo " log 查看实时日志"
|
||||
echo " backup 备份应用"
|
||||
echo " upgrade 升级应用"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
|
@ -1,162 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# Docker 安装脚本 (适用于 AlmaLinux/Rocky Linux 9)
|
||||
# 功能:自动安装 Docker 并配置国内镜像加速
|
||||
# ==============================================
|
||||
|
||||
# 启用严格模式
|
||||
set -euo pipefail
|
||||
|
||||
# --------------------------
|
||||
# 颜色定义
|
||||
# --------------------------
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# --------------------------
|
||||
# 日志函数
|
||||
# --------------------------
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 检查 root 权限
|
||||
# --------------------------
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
log_error "请使用 root 用户或通过 sudo 运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装必要的工具
|
||||
# --------------------------
|
||||
install_tools() {
|
||||
log_info "正在安装必要的工具..."
|
||||
dnf install -y curl wget tar gzip
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 添加 Docker 官方仓库
|
||||
# --------------------------
|
||||
add_docker_repo() {
|
||||
log_info "正在添加 Docker 官方仓库..."
|
||||
|
||||
# 安装 yum-utils 工具
|
||||
dnf install -y yum-utils
|
||||
|
||||
# 添加 Docker 官方仓库
|
||||
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
||||
|
||||
log_info "Docker 官方仓库已添加"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置国内镜像源(可选)
|
||||
# --------------------------
|
||||
setup_mirror() {
|
||||
log_info "正在配置国内镜像源..."
|
||||
|
||||
# 替换为阿里云镜像
|
||||
sed -i 's|https://download.docker.com|https://mirrors.aliyun.com/docker-ce|g' /etc/yum.repos.d/docker-ce.repo
|
||||
|
||||
log_info "已配置阿里云镜像源"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装 Docker
|
||||
# --------------------------
|
||||
install_docker() {
|
||||
log_info "正在安装 Docker..."
|
||||
|
||||
# 安装 Docker CE 和相关工具
|
||||
dnf install -y docker-ce docker-ce-cli containerd.io
|
||||
|
||||
log_info "Docker 已安装完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置 Docker 镜像加速
|
||||
# --------------------------
|
||||
configure_mirror_acceleration() {
|
||||
log_info "正在配置 Docker 镜像加速..."
|
||||
|
||||
# 创建或修改 Docker 配置文件
|
||||
mkdir -p /etc/docker
|
||||
cat > /etc/docker/daemon.json <<'EOF'
|
||||
{
|
||||
"registry-mirrors": [
|
||||
"https://hub-mirror.c.163.com",
|
||||
"https://mirror.baidubce.com",
|
||||
"https://docker.m.daocloud.io"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
|
||||
log_info "Docker 镜像加速已配置完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 启动并启用 Docker 服务
|
||||
# --------------------------
|
||||
start_docker() {
|
||||
log_info "正在启动 Docker 服务..."
|
||||
|
||||
# 启动 Docker 服务
|
||||
systemctl start docker
|
||||
|
||||
# 设置开机自启
|
||||
systemctl enable docker
|
||||
|
||||
log_info "Docker 服务已启动并设置为开机自启"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 测试 Docker 安装
|
||||
# --------------------------
|
||||
test_docker() {
|
||||
log_info "正在测试 Docker 安装..."
|
||||
|
||||
# 测试 Docker 版本
|
||||
docker --version
|
||||
|
||||
# 测试运行 hello-world 容器
|
||||
docker run --rm hello-world
|
||||
|
||||
log_info "Docker 测试完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 主函数
|
||||
# --------------------------
|
||||
main() {
|
||||
check_root
|
||||
install_tools
|
||||
add_docker_repo
|
||||
setup_mirror
|
||||
install_docker
|
||||
configure_mirror_acceleration
|
||||
start_docker
|
||||
test_docker
|
||||
|
||||
log_info "Docker 已成功安装并配置!"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 执行主函数
|
||||
# --------------------------
|
||||
main
|
||||
exit 0
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 检查是否以 root 用户运行
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "请以 root 用户或使用 sudo 运行此脚本。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
# 检查系统架构
|
||||
ARCH=$(uname -m)
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
DOCKER_COMPOSE_ARCH="x86_64"
|
||||
;;
|
||||
aarch64)
|
||||
DOCKER_COMPOSE_ARCH="aarch64"
|
||||
;;
|
||||
armv7l)
|
||||
DOCKER_COMPOSE_ARCH="armv7"
|
||||
;;
|
||||
*)
|
||||
echo "不支持的系统架构: $ARCH"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# 定义安装路径和版本
|
||||
INSTALL_PATH="/usr/local/bin/docker-compose"
|
||||
LATEST_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep "tag_name" | cut -d '"' -f 4)
|
||||
|
||||
echo "正在安装 docker-compose 版本: $LATEST_VERSION"
|
||||
|
||||
# 下载 docker-compose
|
||||
DOWNLOAD_URL="https://gh-proxy.com/https://github.com/docker/compose/releases/download/$LATEST_VERSION/docker-compose-Linux-$DOCKER_COMPOSE_ARCH"
|
||||
curl -L "$DOWNLOAD_URL" -o "$INSTALL_PATH"
|
||||
|
||||
# 检查下载是否成功
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo "下载 docker-compose 失败,请检查网络连接。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 设置可执行权限
|
||||
chmod +x "$INSTALL_PATH"
|
||||
|
||||
# 验证安装
|
||||
if docker-compose --version; then
|
||||
echo "docker-compose 安装成功!"
|
||||
else
|
||||
echo "docker-compose 安装失败,请检查安装路径和权限。"
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ------------------------------
|
||||
# 配置区(根据实际修改)
|
||||
# ------------------------------
|
||||
DRONE_HOST="http://100.78.212.75:4010" # Drone 访问域名
|
||||
GITEA_SERVER="http://100.78.212.75:3000" # Gitea 地址
|
||||
GITEA_CLIENT_ID="1a1da8e3-7425-4e98-92a2-6c2b7d0819d1" # Gitea OAuth2 Client ID
|
||||
GITEA_CLIENT_SECRET="gto_axhtqnuj36gvss5dbfx2vem2hcbhxho4jprqrlatjyk2i2ylgeoq" # Gitea OAuth2 Client Secret
|
||||
POSTGRES_CONN="postgres://postgres:hsc1825713423@100.78.212.75:5432/drone?sslmode=disable" # 数据库连接
|
||||
REDIS_ADDR="100.78.212.75:6379" # Redis 地址
|
||||
REDIS_PASSWORD="hsc1825713423" # Redis 密码
|
||||
INSTALL_DIR="/opt/drone" # 安装目录
|
||||
|
||||
# 国内镜像代理地址(可根据需要更换)
|
||||
DOCKER_PROXY="docker.m.daocloud.io"
|
||||
|
||||
# ------------------------------
|
||||
# 自动生成密钥
|
||||
# ------------------------------
|
||||
DRONE_RPC_SECRET=$(openssl rand -hex 16)
|
||||
|
||||
# ------------------------------
|
||||
# 清理之前的安装
|
||||
# ------------------------------
|
||||
echo "🧹 清理之前的 Drone 安装..."
|
||||
docker-compose down &> /dev/null || true
|
||||
docker rm -f drone-server &> /dev/null || true
|
||||
rm -rf "$INSTALL_DIR"
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
echo "✅ 已清理之前的安装。"
|
||||
|
||||
# ------------------------------
|
||||
# 创建 docker-compose.yml 文件
|
||||
# ------------------------------
|
||||
echo "📝 创建 docker-compose.yml 文件..."
|
||||
cat > "$INSTALL_DIR/docker-compose.yml" <<EOF
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
drone-server:
|
||||
image: ${DOCKER_PROXY}/drone/drone:2
|
||||
container_name: drone-server
|
||||
environment:
|
||||
- DRONE_GITEA_SERVER=$GITEA_SERVER
|
||||
- DRONE_GITEA_CLIENT_ID=$GITEA_CLIENT_ID
|
||||
- DRONE_GITEA_CLIENT_SECRET=$GITEA_CLIENT_SECRET
|
||||
- DRONE_RPC_SECRET=$DRONE_RPC_SECRET
|
||||
- DRONE_SERVER_HOST=$DRONE_HOST
|
||||
- DRONE_SERVER_PROTO=http
|
||||
- DRONE_DATABASE_DRIVER=postgres
|
||||
- DRONE_DATABASE_DATASOURCE=$POSTGRES_CONN
|
||||
- DRONE_REDIS_ADDR=$REDIS_ADDR
|
||||
- DRONE_REDIS_PASSWORD=$REDIS_PASSWORD
|
||||
volumes:
|
||||
- drone-data:/var/lib/drone/
|
||||
ports:
|
||||
- "4010:80"
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
drone-data:
|
||||
EOF
|
||||
|
||||
echo "✅ 已创建 docker-compose.yml 文件。"
|
||||
|
||||
# ------------------------------
|
||||
# 配置 Docker 使用国内镜像加速
|
||||
# ------------------------------
|
||||
echo "🔧 配置 Docker 使用国内镜像加速..."
|
||||
if ! grep -q "registry-mirrors" /etc/docker/daemon.json 2>/dev/null; then
|
||||
cat > /etc/docker/daemon.json <<EOF
|
||||
{
|
||||
"registry-mirrors": [
|
||||
"https://hub-mirror.c.163.com",
|
||||
"https://mirror.baidubce.com",
|
||||
"https://docker.m.daocloud.io"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
systemctl restart docker
|
||||
echo "✅ 已配置 Docker 使用国内镜像加速。"
|
||||
else
|
||||
echo "⚠️ Docker 已配置镜像加速,跳过此步骤。"
|
||||
fi
|
||||
|
||||
# ------------------------------
|
||||
# 启动服务
|
||||
# ------------------------------
|
||||
echo "🚀 启动 Drone Server 服务..."
|
||||
cd "$INSTALL_DIR"
|
||||
docker-compose up -d
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "❌ 启动 Drone Server 服务失败,请检查日志!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ------------------------------
|
||||
# 验证安装
|
||||
# ------------------------------
|
||||
echo "🔍 检查服务状态..."
|
||||
sleep 10
|
||||
if docker ps | grep -q drone-server; then
|
||||
echo "✅ Drone Server 服务已成功启动!"
|
||||
else
|
||||
echo "❌ Drone Server 服务启动失败,请检查以下日志:"
|
||||
echo " docker logs drone-server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ------------------------------
|
||||
# 输出信息
|
||||
# ------------------------------
|
||||
echo "✅ 安装完成!"
|
||||
echo "📌 Drone 控制台: $DRONE_HOST"
|
||||
echo "📌 RPC 密钥: $DRONE_RPC_SECRET (请妥善保存)"
|
||||
echo "📌 管理命令:"
|
||||
echo " docker-compose ps"
|
||||
echo " docker logs drone-server"
|
||||
1103
devops/init_k3s.sh
1103
devops/init_k3s.sh
File diff suppressed because it is too large
Load Diff
|
|
@ -1,203 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# Go 语言安装脚本 for CentOS
|
||||
# 版本:1.3
|
||||
# 作者:您的名字
|
||||
# ==============================================
|
||||
|
||||
# 启用严格模式
|
||||
set -euo pipefail
|
||||
|
||||
# --------------------------
|
||||
# 配置区(可根据需要修改)
|
||||
# --------------------------
|
||||
GO_VERSION="1.22.0" # 默认安装版本
|
||||
INSTALL_DIR="/usr/local" # 安装目录
|
||||
GOPATH="$HOME/go" # GOPATH 设置
|
||||
PROFILE_FILE="/etc/profile.d/go.sh" # 环境变量文件
|
||||
|
||||
# --------------------------
|
||||
# 颜色定义
|
||||
# --------------------------
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# --------------------------
|
||||
# 日志函数
|
||||
# --------------------------
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 检查root权限
|
||||
# --------------------------
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
log_error "请使用root用户或通过sudo运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装依赖
|
||||
# --------------------------
|
||||
install_deps() {
|
||||
log_info "正在安装必要依赖..."
|
||||
yum install -y curl tar gzip wget git make gcc
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 获取最新Go版本
|
||||
# --------------------------
|
||||
get_latest_version() {
|
||||
log_info "正在获取最新Go版本..."
|
||||
local latest
|
||||
latest=$(curl -s https://go.dev/VERSION?m=text | head -1)
|
||||
if [[ "$latest" =~ ^go[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
GO_VERSION="${latest#go}"
|
||||
log_info "检测到最新版本: ${GO_VERSION}"
|
||||
else
|
||||
log_warn "无法获取最新版本,使用默认版本: ${GO_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 下载Go安装包
|
||||
# --------------------------
|
||||
download_go() {
|
||||
local url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz"
|
||||
local tmp_file="/tmp/go${GO_VERSION}.tar.gz"
|
||||
|
||||
if [ -f "$tmp_file" ]; then
|
||||
log_info "发现本地缓存安装包,跳过下载"
|
||||
return
|
||||
fi
|
||||
|
||||
log_info "正在下载Go ${GO_VERSION}..."
|
||||
if ! curl -fSL --progress-bar -o "$tmp_file" "$url"; then
|
||||
log_error "下载失败,请检查网络连接或版本是否存在"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装Go
|
||||
# --------------------------
|
||||
install_go() {
|
||||
local tmp_file="/tmp/go${GO_VERSION}.tar.gz"
|
||||
|
||||
log_info "正在安装Go到 ${INSTALL_DIR}..."
|
||||
tar -C "$INSTALL_DIR" -xzf "$tmp_file"
|
||||
rm -f "$tmp_file"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置环境变量
|
||||
# --------------------------
|
||||
setup_env() {
|
||||
log_info "正在配置环境变量..."
|
||||
|
||||
# 创建环境变量文件
|
||||
cat > "$PROFILE_FILE" <<EOF
|
||||
export GOROOT=${INSTALL_DIR}/go
|
||||
export GOPATH=${GOPATH}
|
||||
export PATH=\$GOROOT/bin:\$GOPATH/bin:\$PATH
|
||||
EOF
|
||||
|
||||
# 立即生效
|
||||
source "$PROFILE_FILE"
|
||||
|
||||
# 创建GOPATH目录
|
||||
mkdir -p "${GOPATH}/"{src,bin,pkg}
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 验证安装
|
||||
# --------------------------
|
||||
verify_install() {
|
||||
log_info "验证安装..."
|
||||
if ! command -v go &> /dev/null; then
|
||||
log_error "Go安装失败,请检查错误"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "\n${GREEN}Go安装成功!${NC}"
|
||||
echo "============================="
|
||||
go version
|
||||
echo "GOROOT: $(go env GOROOT)"
|
||||
echo "GOPATH: $(go env GOPATH)"
|
||||
echo "============================="
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 卸载Go
|
||||
# --------------------------
|
||||
uninstall_go() {
|
||||
log_info "正在卸载Go..."
|
||||
rm -rf "${INSTALL_DIR}/go"
|
||||
rm -f "$PROFILE_FILE"
|
||||
log_info "Go已卸载"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 清理缓存
|
||||
# --------------------------
|
||||
clean_cache() {
|
||||
log_info "正在清理缓存..."
|
||||
rm -f "/tmp/go${GO_VERSION}.tar.gz"
|
||||
log_info "缓存已清理"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 主函数
|
||||
# --------------------------
|
||||
main() {
|
||||
case "$1" in
|
||||
install)
|
||||
check_root
|
||||
install_deps
|
||||
|
||||
# 如果想安装最新版本,取消下面注释
|
||||
# get_latest_version
|
||||
|
||||
download_go
|
||||
install_go
|
||||
setup_env
|
||||
verify_install
|
||||
|
||||
log_info "安装完成!请重新登录或运行 'source ${PROFILE_FILE}' 使环境变量生效"
|
||||
;;
|
||||
uninstall)
|
||||
check_root
|
||||
uninstall_go
|
||||
;;
|
||||
clean)
|
||||
clean_cache
|
||||
;;
|
||||
*)
|
||||
echo "用法: $0 {install|uninstall|clean}"
|
||||
echo " install 安装Go"
|
||||
echo " uninstall 卸载Go"
|
||||
echo " clean 清理缓存"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 执行主函数
|
||||
# --------------------------
|
||||
main "$@"
|
||||
exit 0
|
||||
|
|
@ -1,73 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# JDK 17 安装脚本 for CentOS
|
||||
# 作者:awt
|
||||
# 日期:mx
|
||||
|
||||
# 检查是否以root用户运行
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
echo "请使用root用户或通过sudo运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 安装必要依赖
|
||||
echo "正在安装必要依赖..."
|
||||
yum install -y wget tar gzip
|
||||
|
||||
# 设置JDK版本
|
||||
JDK_VERSION="17.0.10"
|
||||
JDK_BUILD="7"
|
||||
JDK_ARCHIVE="jdk-${JDK_VERSION}_linux-x64_bin.tar.gz"
|
||||
JDK_URL="https://download.oracle.com/java/${JDK_VERSION%%.*}/archive/jdk-${JDK_VERSION}_linux-x64_bin.tar.gz"
|
||||
|
||||
# 安装目录
|
||||
INSTALL_DIR="/usr/lib/jvm"
|
||||
JAVA_HOME_DIR="jdk-${JDK_VERSION}"
|
||||
|
||||
# 创建安装目录
|
||||
mkdir -p ${INSTALL_DIR}
|
||||
cd ${INSTALL_DIR}
|
||||
|
||||
# 下载JDK (使用--no-check-certificate和--no-cookies配合Oracle的复杂下载逻辑)
|
||||
echo "正在下载JDK ${JDK_VERSION}..."
|
||||
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ${JDK_URL} -O ${JDK_ARCHIVE}
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "JDK下载失败,请检查网络连接或URL有效性"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 解压安装
|
||||
echo "正在安装JDK..."
|
||||
tar -xzf ${JDK_ARCHIVE}
|
||||
rm -f ${JDK_ARCHIVE}
|
||||
|
||||
# 设置环境变量
|
||||
echo "配置环境变量..."
|
||||
cat > /etc/profile.d/java.sh <<EOF
|
||||
export JAVA_HOME=${INSTALL_DIR}/${JAVA_HOME_DIR}
|
||||
export PATH=\$JAVA_HOME/bin:\$PATH
|
||||
EOF
|
||||
|
||||
# 加载环境变量
|
||||
source /etc/profile.d/java.sh
|
||||
|
||||
# 更新alternatives系统
|
||||
echo "设置系统默认Java..."
|
||||
if [ -d "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin" ]; then
|
||||
update-alternatives --install "/usr/bin/java" "java" "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/java" 1000
|
||||
update-alternatives --install "/usr/bin/javac" "javac" "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/javac" 1000
|
||||
update-alternatives --set java "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/java"
|
||||
update-alternatives --set javac "${INSTALL_DIR}/${JAVA_HOME_DIR}/bin/javac"
|
||||
else
|
||||
echo "Java二进制文件未找到,安装可能失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 验证安装
|
||||
echo "验证Java版本..."
|
||||
java -version
|
||||
javac -version
|
||||
|
||||
echo "JDK ${JDK_VERSION} 安装完成!"
|
||||
echo "JAVA_HOME 设置为: ${INSTALL_DIR}/${JAVA_HOME_DIR}"
|
||||
|
|
@ -1,161 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# Maven 安装脚本(使用国内镜像)
|
||||
# 功能:自动安装 Maven 并配置阿里云镜像源
|
||||
# ==============================================
|
||||
|
||||
# 启用严格模式
|
||||
set -euo pipefail
|
||||
|
||||
# --------------------------
|
||||
# 颜色定义
|
||||
# --------------------------
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# --------------------------
|
||||
# 日志函数
|
||||
# --------------------------
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 检查 root 权限
|
||||
# --------------------------
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
log_error "请使用 root 用户或通过 sudo 运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装 Java(Maven 依赖 Java)
|
||||
# --------------------------
|
||||
install_java() {
|
||||
log_info "正在检查 Java 是否已安装..."
|
||||
|
||||
if ! command -v java &> /dev/null; then
|
||||
log_warn "未检测到 Java,正在安装 OpenJDK 17..."
|
||||
dnf install -y java-17-openjdk-devel
|
||||
else
|
||||
log_info "Java 已安装,版本信息如下:"
|
||||
java -version
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 下载并安装 Maven(使用国内镜像)
|
||||
# --------------------------
|
||||
install_maven() {
|
||||
log_info "正在下载并安装 Maven(使用国内镜像)..."
|
||||
|
||||
# 定义 Maven 版本和安装路径
|
||||
MAVEN_VERSION="3.8.8"
|
||||
INSTALL_DIR="/opt/maven"
|
||||
|
||||
# 使用阿里云镜像地址
|
||||
MAVEN_URL="https://mirrors.aliyun.com/apache/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
|
||||
|
||||
# 创建安装目录
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
|
||||
# 下载 Maven
|
||||
log_info "正在从阿里云镜像下载 Maven ${MAVEN_VERSION}..."
|
||||
curl -L -o "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" "$MAVEN_URL"
|
||||
|
||||
# 解压到安装目录
|
||||
tar -xzf "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz" -C "$INSTALL_DIR" --strip-components=1
|
||||
|
||||
# 清理临时文件
|
||||
rm -f "/tmp/apache-maven-${MAVEN_VERSION}-bin.tar.gz"
|
||||
|
||||
log_info "Maven 已成功安装到 ${INSTALL_DIR}"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置环境变量
|
||||
# --------------------------
|
||||
configure_env() {
|
||||
log_info "正在配置 Maven 环境变量..."
|
||||
|
||||
# 添加 Maven 到 PATH
|
||||
echo 'export M2_HOME=/opt/maven' > /etc/profile.d/maven.sh
|
||||
echo 'export PATH=$M2_HOME/bin:$PATH' >> /etc/profile.d/maven.sh
|
||||
|
||||
# 使配置立即生效
|
||||
source /etc/profile.d/maven.sh
|
||||
|
||||
log_info "Maven 环境变量已配置完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置阿里云镜像源
|
||||
# --------------------------
|
||||
configure_aliyun_mirror() {
|
||||
log_info "正在配置阿里云 Maven 镜像源..."
|
||||
|
||||
# 创建 Maven 配置目录
|
||||
mkdir -p /root/.m2
|
||||
|
||||
# 配置 settings.xml 文件
|
||||
cat > /root/.m2/settings.xml <<'EOF'
|
||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||
<mirrors>
|
||||
<mirror>
|
||||
<id>aliyun</id>
|
||||
<name>Aliyun Maven</name>
|
||||
<url>https://maven.aliyun.com/repository/public</url>
|
||||
<mirrorOf>*</mirrorOf>
|
||||
</mirror>
|
||||
</mirrors>
|
||||
</settings>
|
||||
EOF
|
||||
|
||||
log_info "阿里云 Maven 镜像源已配置完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 测试 Maven 安装
|
||||
# --------------------------
|
||||
test_maven() {
|
||||
log_info "正在测试 Maven 安装..."
|
||||
|
||||
mvn -v
|
||||
|
||||
log_info "Maven 安装测试完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 主函数
|
||||
# --------------------------
|
||||
main() {
|
||||
check_root
|
||||
install_java
|
||||
install_maven
|
||||
configure_env
|
||||
configure_aliyun_mirror
|
||||
test_maven
|
||||
|
||||
log_info "Maven 已成功安装并配置!"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 执行主函数
|
||||
# --------------------------
|
||||
main
|
||||
exit 0
|
||||
|
|
@ -1,162 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# ==============================================
|
||||
# Node.js 安装脚本
|
||||
# 功能:自动安装 Node.js 并配置阿里云镜像源
|
||||
# 适用系统:CentOS/RHEL、Ubuntu/Debian 等主流 Linux 发行版
|
||||
# ==============================================
|
||||
|
||||
# 启用严格模式
|
||||
set -euo pipefail
|
||||
|
||||
# --------------------------
|
||||
# 颜色定义
|
||||
# --------------------------
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[0;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# --------------------------
|
||||
# 日志函数
|
||||
# --------------------------
|
||||
log_info() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1" >&2
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 检查 root 权限
|
||||
# --------------------------
|
||||
check_root() {
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
log_error "请使用 root 用户或通过 sudo 运行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 检测系统类型
|
||||
# --------------------------
|
||||
detect_os() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
OS_NAME="${ID:-unknown}"
|
||||
OS_VERSION="${VERSION_ID:-unknown}"
|
||||
else
|
||||
log_error "无法检测操作系统类型,请手动安装 Node.js"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装依赖工具
|
||||
# --------------------------
|
||||
install_dependencies() {
|
||||
log_info "正在安装必要的依赖工具..."
|
||||
|
||||
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
|
||||
dnf install -y curl wget
|
||||
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
|
||||
apt update
|
||||
apt install -y curl wget
|
||||
else
|
||||
log_error "不支持的操作系统: ${OS_NAME}"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装 Node.js
|
||||
# --------------------------
|
||||
install_nodejs() {
|
||||
log_info "正在安装 Node.js..."
|
||||
|
||||
# 添加 NodeSource 仓库
|
||||
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
|
||||
curl -sL https://rpm.nodesource.com/setup_18.x | bash -
|
||||
dnf install -y nodejs
|
||||
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
|
||||
curl -sL https://deb.nodesource.com/setup_18.x | bash -
|
||||
apt install -y nodejs
|
||||
else
|
||||
log_error "不支持的操作系统: ${OS_NAME}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log_info "Node.js 安装完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 配置 npm 阿里云镜像源
|
||||
# --------------------------
|
||||
configure_npm_mirror() {
|
||||
log_info "正在配置 npm 阿里云镜像源..."
|
||||
|
||||
npm config set registry https://registry.npmmirror.com
|
||||
|
||||
log_info "npm 阿里云镜像源已配置完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 安装并配置 Yarn(可选)
|
||||
# --------------------------
|
||||
install_and_configure_yarn() {
|
||||
log_info "正在安装并配置 Yarn..."
|
||||
|
||||
# 安装 Yarn
|
||||
if [[ "$OS_NAME" == "centos" || "$OS_NAME" == "rhel" || "$OS_NAME" == "rocky" || "$OS_NAME" == "almalinux" ]]; then
|
||||
npm install -g yarn
|
||||
elif [[ "$OS_NAME" == "ubuntu" || "$OS_NAME" == "debian" ]]; then
|
||||
npm install -g yarn
|
||||
fi
|
||||
|
||||
# 配置 Yarn 阿里云镜像源
|
||||
yarn config set registry https://registry.npmmirror.com
|
||||
|
||||
log_info "Yarn 安装并配置完成"
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 测试 Node.js 和 npm 安装
|
||||
# --------------------------
|
||||
test_installation() {
|
||||
log_info "正在测试 Node.js 和 npm 安装..."
|
||||
|
||||
NODE_VERSION=$(node --version)
|
||||
NPM_VERSION=$(npm --version)
|
||||
|
||||
log_info "Node.js 安装成功,版本为: ${NODE_VERSION}"
|
||||
log_info "npm 安装成功,版本为: ${NPM_VERSION}"
|
||||
|
||||
if command -v yarn &> /dev/null; then
|
||||
YARN_VERSION=$(yarn --version)
|
||||
log_info "Yarn 安装成功,版本为: ${YARN_VERSION}"
|
||||
fi
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 主函数
|
||||
# --------------------------
|
||||
main() {
|
||||
check_root
|
||||
detect_os
|
||||
install_dependencies
|
||||
install_nodejs
|
||||
configure_npm_mirror
|
||||
install_and_configure_yarn
|
||||
test_installation
|
||||
}
|
||||
|
||||
# --------------------------
|
||||
# 执行主函数
|
||||
# --------------------------
|
||||
main
|
||||
exit 0
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
#!/bin/bash
|
||||
# 1. tailscale
|
||||
# 初始化Linux服务器脚本
|
||||
# 功能:1. 时钟同步配置 2. Yum加速配置 3. 系统基础优化
|
||||
|
||||
# 检查是否为root用户
|
||||
if [ $(id -u) != "0" ]; then
|
||||
|
|
@ -1,78 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 日志级别定义
|
||||
LOG_LEVEL_DEBUG=10
|
||||
LOG_LEVEL_INFO=20
|
||||
LOG_LEVEL_WARNING=30
|
||||
LOG_LEVEL_ERROR=40
|
||||
|
||||
# 当前日志级别
|
||||
CURRENT_LOG_LEVEL=$LOG_LEVEL_INFO
|
||||
|
||||
# 颜色定义
|
||||
COLOR_RESET="\033[0m"
|
||||
COLOR_DEBUG="\033[0;36m"
|
||||
COLOR_INFO="\033[0;32m"
|
||||
COLOR_WARNING="\033[0;33m"
|
||||
COLOR_ERROR="\033[0;31m"
|
||||
|
||||
# 日志函数
|
||||
log() {
|
||||
local level=$1
|
||||
shift
|
||||
local message="$*"
|
||||
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
|
||||
local color=$COLOR_RESET
|
||||
|
||||
if [ "$level" -ge "$CURRENT_LOG_LEVEL" ]; then
|
||||
case $level in
|
||||
$LOG_LEVEL_DEBUG)
|
||||
color=$COLOR_DEBUG
|
||||
;;
|
||||
$LOG_LEVEL_INFO)
|
||||
color=$COLOR_INFO
|
||||
;;
|
||||
$LOG_LEVEL_WARNING)
|
||||
color=$COLOR_WARNING
|
||||
;;
|
||||
$LOG_LEVEL_ERROR)
|
||||
color=$COLOR_ERROR
|
||||
;;
|
||||
esac
|
||||
echo -e "${color}[$timestamp] [${level}] $message${COLOR_RESET}"
|
||||
fi
|
||||
}
|
||||
|
||||
# 帮助函数
|
||||
show_help() {
|
||||
echo "Usage: $0 [options]"
|
||||
echo "Options:"
|
||||
echo " -h, --help Show this help message and exit"
|
||||
echo " -v, --verbose Set log level to debug"
|
||||
}
|
||||
|
||||
# 解析命令行参数
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
-v|--verbose)
|
||||
CURRENT_LOG_LEVEL=$LOG_LEVEL_DEBUG
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unknown parameter passed: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# 示例日志记录
|
||||
log $LOG_LEVEL_INFO "Script started"
|
||||
log $LOG_LEVEL_DEBUG "This is a debug message"
|
||||
log $LOG_LEVEL_WARNING "This is a warning message"
|
||||
log $LOG_LEVEL_ERROR "This is an error message"
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# 1. 拉取frp.tar.gz
|
||||
# todo 后续开发
|
||||
|
||||
# 检查是否为root用户
|
||||
if [ $(id -u) != "0" ]; then
|
||||
echo "错误:请使用root用户执行此脚本"
|
||||
exit 1
|
||||
fi
|
||||
Loading…
Reference in New Issue