2
0

added Linux - Automatic Services Monitor script

This commit is contained in:
2023-09-16 16:24:17 +02:00
parent 46a7dcdebe
commit e8989884ed

View File

@@ -0,0 +1,69 @@
#!/bin/bash
# Usage: "Linux - Automatic Services Monitor.sh"
#
# Description:
# This script is used from inside of Tactical RMM instances to monitor all automatic starting services.
# This script should be deployed as a check script.
#
# Options:
#
# Author: D. de Kooker (info@dcomputers.nl)
# Sources: n/a Created with the help of openai
# Changelog :
# 16-09-2023 - Initial script
# Array of services to exclude from monitoring
# // EXCLUDE=("service_to_exclude1" "service_to_exclude2")
EXCLUDE=("")
# Function to check the status of a service and display its last error message
check_service_status() {
service_name="$1"
systemctl is-active --quiet "$service_name"
if [ $? -eq 0 ]; then
return 0 # Service is running
else
return 1 # Service is not running
fi
}
# Function to get and display the last error message from the service's status log
display_last_error_message() {
service_name="$1"
last_error_message=$(journalctl -n 1 -u "$service_name" --no-pager --quiet)
if [ -n "$last_error_message" ]; then
echo "Last error message for $service_name:"
echo "$last_error_message"
fi
}
# Array to store the names of stopped services
STOPPED_SERVICES=()
# Main loop to monitor all services except excluded ones
# echo "Monitoring all services set to start automatically..."
# Get the list of all enabled services
enabled_services=$(systemctl list-units --type=service --state=active --no-legend | awk '{print $1}')
for service in $enabled_services; do
# Check if the service is in the exclusion list
if [[ ! " ${EXCLUDE[@]} " =~ " $service " ]]; then
if ! check_service_status "$service"; then
STOPPED_SERVICES+=("$service")
fi
fi
done
if [ ${#STOPPED_SERVICES[@]} -eq 0 ]; then
echo "All services are running."
exit 0
else
echo "Services in error/stopped state:"
for stopped_service in "${STOPPED_SERVICES[@]}"; do
echo "$stopped_service"
display_last_error_message "$stopped_service"
echo ""
done
exit 1
fi