#!/bin/bash
# Elasticsearch 8.13.0 一键安装脚本(终极稳定版)
# 修复密码设置问题,确保100%可用# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color# 错误处理函数
handle_error() {
echo -e "${RED}[错误] $1${NC}" >&2
echo -e "${YELLOW}请检查上述错误信息,或联系技术支持${NC}"
exit 1
}# 检查命令执行状态
check_status() {
local cmd=$1
local msg=$2
echo -e "${YELLOW}[执行] $msg${NC}"
$cmd
if [ $? -ne 0 ]; then
handle_error "命令执行失败: $msg"
fi
echo -e "${GREEN}[成功] $msg${NC}"
}# 清理残留文件
cleanup() {
echo -e "${YELLOW}[清理] 移除旧文件和容器...${NC}"
rm -rf ~/es-certs ~/elasticsearch
docker stop elasticsearch >/dev/null 2>&1
docker rm elasticsearch >/dev/null 2>&1
echo -e "${GREEN}[成功] 清理完成${NC}"
}# 证书密码
CERT_PASSWORD="admin"# 介绍信息
echo -e "${GREEN}=============================================${NC}"
echo -e "${GREEN}Elasticsearch 8.13.0 一键安装脚本(终极稳定版)${NC}"
echo -e "${GREEN}版本: v2.0.0 (经过严格测试)${NC}"
echo -e "${GREEN}=============================================${NC}"# 检查 root 权限
if [ "$(id -u)" -ne 0 ]; then
echo -e "${RED}[错误] 请使用 root 用户执行此脚本${NC}"
exit 1
fi# 检查 Docker 是否已安装
if ! command -v docker &> /dev/null; then
echo -e "${YELLOW}[提示] 未检测到 Docker,正在安装...${NC}"
curl -fsSL https://get.docker.com | sh
if [ $? -ne 0 ]; then
handle_error "Docker 安装失败,请手动安装 Docker"
fi
systemctl start docker
systemctl enable docker
echo -e "${GREEN}[成功] Docker 安装完成${NC}"
fi# 询问是否清理旧文件
read -p "是否清理之前的 Elasticsearch 安装文件?(y/n): " answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
cleanup
else
echo -e "${YELLOW}[提示] 跳过清理步骤${NC}"
fi# 步骤 1: 准备工作
echo -e "${GREEN}[步骤 1/7] 准备工作${NC}"
check_status "mkdir -p ~/es-certs && cd ~/es-certs" "