#!/bin/bash

# 定义颜色
YELLOW='\033[1;33m'
GREEN='\033[1;32m'
NC='\033[0m' # No Color

# 功能选择菜单
while true; do
    echo -e "${YELLOW}请选择操作："
    echo -e "1. 创建并启动一个新服务"
    echo -e "2. 停止并删除一个现有服务"
    echo -e "3. 查看服务日志"
    echo -e "4. 启动服务"
    echo -e "5. 停止服务"
    echo -e "6. 重启服务"
    echo -e "7. 退出${NC}"

    # 读取用户操作选择
    read -p "请输入选项 (1-7): " operation

    case $operation in
    1)
        echo -e "${YELLOW}请输入需要作为服务的脚本路径:${NC}"
        read -erp "脚本路径: " script_path

        if [ ! -f "$script_path" ]; then
            echo -e "${GREEN}脚本路径不存在，请重新输入。${NC}"
            exit 1
        fi

        echo -e "${YELLOW}请输入服务名称:${NC}"
        read -erp "服务名称: " service_name

        service_file="/etc/systemd/system/${service_name}.service"

        # 检查服务文件是否已存在
        if [ -f "$service_file" ]; then
            echo -e "${GREEN}服务文件 $service_name 已存在，请选择不同的服务名称。${NC}"
            exit 1
        fi

        # 创建服务文件
        service_file="/etc/systemd/system/${service_name}.service"
        echo -e "${YELLOW}正在创建服务文件: $service_file${NC}"
        cat <<EOF | sudo tee $service_file > /dev/null
[Unit]
Description=$service_name service

[Service]
ExecStart=/bin/bash $script_path
Restart=always

[Install]
WantedBy=multi-user.target
EOF

        # 重新加载systemd，启动服务，设置开机自启
        sudo systemctl daemon-reload
        sudo systemctl start $service_name
        sudo systemctl enable $service_name

        # 显示服务状态
        echo -e "${GREEN}服务 $service_name 已创建并启动。${NC}"
        echo -e "${GREEN}正在查看服务日志，按 Ctrl+C 退出。${NC}"
        journalctl -u $service_name.service -f
        ;;
    2)
        # 询问并读取用户想要停止并删除的服务名称
        echo -e "${YELLOW}请输入需要停止并删除的服务名称:${NC}"
        read -p "服务名称: " service_name

        # 停止服务，禁用服务，删除服务文件
        sudo systemctl stop $service_name
        sudo systemctl disable $service_name
        service_file="/etc/systemd/system/${service_name}.service"
        sudo rm -f $service_file

        # 重新加载systemd
        sudo systemctl daemon-reload
        sudo systemctl reset-failed

        echo -e "${GREEN}服务 $service_name 已停止并删除。${NC}"
        ;;
    3)
        # 查看服务日志
        echo -e "${YELLOW}请输入要查看日志的服务名称:${NC}"
        read -p "服务名称: " service_name

        echo -e "${GREEN}正在显示 ${service_name}.service 的日志，按 Ctrl+C 退出。${NC}"
        journalctl -u $service_name.service -f
        ;;
    4)
        # 启动服务
        echo -e "${YELLOW}请输入要启动的服务名称:${NC}"
        read -p "服务名称: " service_name

        sudo systemctl start $service_name
        echo -e "${GREEN}服务 ${service_name}.service 已启动。${NC}"
        ;;
    5)
        # 停止服务
        echo -e "${YELLOW}请输入要停止的服务名称:${NC}"
        read -p "服务名称: " service_name

        sudo systemctl stop $service_name
        echo -e "${GREEN}服务 ${service_name}.service 已停止。${NC}"
        ;;
    6)
        # 重启服务
        echo -e "${YELLOW}请输入要重启的服务名称:${NC}"
        read -p "服务名称: " service_name

        sudo systemctl restart $service_name
        echo -e "${GREEN}服务 ${service_name}.service 已重启。${NC}"
        ;;
    7)
        echo -e "${GREEN}退出脚本。${NC}"
        break
        ;;
    *)
        echo -e "${GREEN}无效选项，请输入1到7之间的数字。${NC}"
        ;;
    esac

    echo -e "\n" # 添加换行以便更好的输出显示
done
