Untitled
cion
plain_text
a year ago
7.5 kB
7
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