added Linux - Automatic Services Monitor script
This commit is contained in:
69
Check_scripts/Linux - Automatic Services Monitor.sh
Normal file
69
Check_scripts/Linux - Automatic Services Monitor.sh
Normal 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
|
||||
Reference in New Issue
Block a user