#!/usr/bin/env bash # Description : script to check the status of systemd units # if they failed, try to restart the service once !! # Author : Seddik Alaoui Ismaili # Version : 1.0 # Exits code warning_exit="1" ok_exit="0" # Unit list unit_list=(pagure_ci pagure_ev pagure_fast_worker pagure_loadjson pagure_logcom pagure_medium_worker pagure_milter pagure_mirror pagure_slow_worker pagure_webhook pagure_worker pagure_mirror_project_in.timer) #Element's arrays failed_array=() active_array=() # Check units's status echo -e "here the lenght of array : ${#active_array[@]}" for element in ${unit_list[@]}; do status=$(systemctl status ${element} |grep -E "Active:" | awk '{ print $2 }') if [ $status == failed ]; then systemctl restart ${element} && active_array+=($element) || failed_array+=($element) fi done # check the lenght of array and print result/exit code for nagios if [ ${#failed_array[@]} -ne "0" ]; then echo -e "WARNING - Failed systemd units after restart : ${failed_array[@]}" exit ${warning_exit} elif [ ${#failed_array[@]} -eq "0" ]; then echo -e "OK - Systemd units are active" exit ${ok_exit} fi