#!/bin/bash

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

# 功能选择菜单
echo -e "${YELLOW}请选择操作："
echo -e "1. 创建并启动一个新服务"
echo -e "2. 停止并删除一个现有服务${NC}"

# 读取用户操作选择
read -p "请输入选项 (1 或 2): " 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}"
    ;;
*)
    echo -e "${GREEN}无效选项，程序退出。${NC}"
    exit 1
    ;;
esac
