Untitled

 avatar
cion
plain_text
6 months ago
7.5 kB
3
Indexable
#!/usr/bin/env bash

# List of services
SERVICES=(
    "data-uploader-consumer.service"
    "data-uploader-exposer.service"
    "data-uploader-file-fetch.service"
    "data-uploader-staging-writer.service"
    "data-uploader-writeback.service"
    "pulse-portal-backend.service"
    "pulse-portal-ui.service"
)

# User variable
USER="wmanltc"

# Functions
# Check if the script is run by the correct user
check_user() {
    if [ "$(whoami)" != "$USER" ]; then
        echo "This script must be run as $USER"
        exit 1
    fi
}

# Display the status of all services
display_status() {
    echo "Service Status:"
    for service in "${SERVICES[@]}"; do
        status=$(systemctl --user is-active "$service")
        echo "$service: $status"
    done
}

# Start a service
start_service() {
    systemctl --user start "$1"
    echo "$1 started."
}

# Stop a service
stop_service() {
    systemctl --user stop "$1"
    echo "$1 stopped."
}

# Enable a service
enable_service() {
    systemctl --user enable "$1"
    echo "$1 enabled."
}

# Disable a service
disable_service() {
    systemctl --user disable "$1"
    echo "$1 disabled."
}

# Start all services
start_all_services() {
    for service in "${SERVICES[@]}"; do
        start_service "$service"
    done
}

# Stop all services
stop_all_services() {
    for service in "${SERVICES[@]}"; do
        stop_service "$service"
    done
}

# Enable all services
enable_all_services() {
    for service in "${SERVICES[@]}"; do
        enable_service "$service"
    done
}

# Disable all services
disable_all_services() {
    for service in "${SERVICES[@]}"; do
        disable_service "$service"
    done
}

# Display menu
display_menu() {
    echo "Select an option:"
    echo "1. Display status of all services"
    echo "2. Start a service"
    echo "3. Stop a service"
    echo "4. Enable a service"
    echo "5. Disable a service"
    echo "6. Start all services"
    echo "7. Stop all services"
    echo "8. Enable all services"
    echo "9. Disable all services"
    echo "0. Exit"
}

# Display service selection menu
select_services() {
    echo "Select services (separate by space, e.g., 1 3 5):"
    for i in "${!SERVICES[@]}"; do
        echo "$((i+1)). ${SERVICES[$i]}"
    done
    read -r -a selected
    selected_services=()
    for i in "${selected[@]}"; do
        selected_services+=("${SERVICES[$((i-1))]}")
    done
    printf "%s\n" "${selected_services[@]}"
}

# main logic
main() {
    check_user

    while true; do
        display_menu
        read -r -p "Enter your choice: " choice

        case $choice in
            1) display_status ;;
            2) 
                services=()
                while IFS= read -r line; do
                    services+=("$line")
                done < <(select_services)
                for service in "${services[@]}"; do
                    start_service "$service"
                done
                ;;
            3) 
                services=()
                while IFS= read -r line; do
                    services+=("$line")
                done < <(select_services)
                for service in "${services[@]}"; do
                    stop_service "$service"
                done
                ;;
            4) 
                services=()
                while IFS= read -r line; do
                    services+=("$line")
                done < <(select_services)
                for service in "${services[@]}"; do
                    enable_service "$service"
                done
                ;;
            5) 
                services=()
                while IFS= read -r line; do
                    services+=("$line")
                done < <(select_services)
                for service in "${services[@]}"; do
                    disable_service "$service"
                done
                ;;
            6) start_all_services ;;
            7) stop_all_services ;;
            8) enable_all_services ;;
            9) disable_all_services ;;
            0) exit 0 ;;
            *) echo "Invalid choice. Please try again." ;;
        esac
    done
}

main


------------

bash-4.4$ ./pulse_service_manager.sh
Select an option:
1. Display status of all services
2. Start a service
3. Stop a service
4. Enable a service
5. Disable a service
6. Start all services
7. Stop all services
8. Enable all services
9. Disable all services
0. Exit
Enter your choice: 2

Invalid unit name "Select services (separate by space, e.g., 1 3 5):" was escaped as "Select\x20services\x20\x28separate\x20by\x20space\x2c\x20e.g.\x2c\x201\x203\x205\x29:" (maybe you should use systemd-escape?)
Failed to start Select\x20services\x20\x28separate\x20by\x20space\x2c\x20e.g.\x2c\x201\x203\x205\x29:.service: Unit Select\x20services\x20\x28separate\x20by\x20space\x2c\x20e.g.\x2c\x201\x203\x205\x29:.service not found.
Select services (separate by space, e.g., 1 3 5): started.
Invalid unit name "1. data-uploader-consumer.service" was escaped as "1.\x20data-uploader-consumer.service" (maybe you should use systemd-escape?)
Failed to start 1.\x20data-uploader-consumer.service: Unit 1.\x20data-uploader-consumer.service not found.
1. data-uploader-consumer.service started.
Invalid unit name "2. data-uploader-exposer.service" was escaped as "2.\x20data-uploader-exposer.service" (maybe you should use systemd-escape?)
Failed to start 2.\x20data-uploader-exposer.service: Unit 2.\x20data-uploader-exposer.service not found.
2. data-uploader-exposer.service started.
Invalid unit name "3. data-uploader-file-fetch.service" was escaped as "3.\x20data-uploader-file-fetch.service" (maybe you should use systemd-escape?)
Failed to start 3.\x20data-uploader-file-fetch.service: Unit 3.\x20data-uploader-file-fetch.service not found.
3. data-uploader-file-fetch.service started.
Invalid unit name "4. data-uploader-staging-writer.service" was escaped as "4.\x20data-uploader-staging-writer.service" (maybe you should use systemd-escape?)
Failed to start 4.\x20data-uploader-staging-writer.service: Unit 4.\x20data-uploader-staging-writer.service not found.
4. data-uploader-staging-writer.service started.
Invalid unit name "5. data-uploader-writeback.service" was escaped as "5.\x20data-uploader-writeback.service" (maybe you should use systemd-escape?)
Failed to start 5.\x20data-uploader-writeback.service: Unit 5.\x20data-uploader-writeback.service not found.
5. data-uploader-writeback.service started.
Invalid unit name "6. pulse-portal-backend.service" was escaped as "6.\x20pulse-portal-backend.service" (maybe you should use systemd-escape?)
Failed to start 6.\x20pulse-portal-backend.service: Unit 6.\x20pulse-portal-backend.service not found.
6. pulse-portal-backend.service started.
Invalid unit name "7. pulse-portal-ui.service" was escaped as "7.\x20pulse-portal-ui.service" (maybe you should use systemd-escape?)
Failed to start 7.\x20pulse-portal-ui.service: Unit 7.\x20pulse-portal-ui.service not found.
7. pulse-portal-ui.service started.
Failed to mangle name: Invalid argument
Failed to expand names: Invalid argument
 started.
Select an option:
1. Display status of all services
2. Start a service
3. Stop a service
4. Enable a service
5. Disable a service
6. Start all services
7. Stop all services
8. Enable all services
9. Disable all services
0. Exit
Enter your choice:
Editor is loading...
Leave a Comment