#!/usr/bin/env bash working_dir="$(dirname $(realpath $0))" # ------------- # - Some Variables # ------------- LOCK_DIR="/tmp/$(basename $0).LOCK" service_name="nginx" alert_email_arr="ckubu@oopen.de" sender_address="check_${service_name}@$(hostname -f)" check_string_ps="nginx: master" restart_needed=false # ------------- # - Job is already running? # ------------- # - If job already runs, stop execution.. # - if mkdir "$LOCK_DIR" 2> /dev/null ; then ## - Remove lockdir when the script finishes, or when it receives a signal trap clean_up SIGHUP SIGINT SIGTERM else datum="$(date +"%d.%m.%Y %H:%M")" msg="[ Error ]: A previos instance of \"`basename $0`\" seems already be running.\n\n Exiting now.." echo "" echo "[ Error ]: A previos instance of that script \"`basename $0`\" seems already be running." echo "" echo -e " Exiting now.." echo "" for _email in ${alert_email_arr[@]} ; do echo -e "To:${_email}\n${content_type}\nSubject:Error cronjob `basename $0` -- $datum\n${msg}\n" \ | sendmail -F "Error `hostname -f`" -f $sender_address $_email done exit 1 fi # ------------- # - Some functions # ------------- clean_up() { # Perform program exit housekeeping rm -rf "$LOCK_DIR" exit $1 } echononl(){ if $terminal ; then echo X\\c > /tmp/shprompt$$ if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then echo -e -n "$*\\c" 1>&2 else echo -e -n "$*" 1>&2 fi rm /tmp/shprompt$$ fi } fatal(){ echo "" if $terminal ; then echo -e " [ \033[31m\033[1mFatal\033[m ]: $*" echo "" echo -e " \033[31m\033[1mScript was interupted\033[m!" else echo " [ Fatal ]: $*" echo "" echo " Script was terminated...." fi echo "" clean_up 1 } error (){ echo "" if $terminal ; then echo -e " [ \033[31m\033[1mError\033[m ]: $*" else echo "[ Error ]: $*" fi echo "" } warn (){ echo "" if $terminal ; then echo -e " [ \033[33m\033[1mWarning\033[m ]: $*" else echo "[ Warning ]: $*" fi echo "" } info (){ if $terminal ; then echo "" echo -e " [ \033[32m\033[1mInfo\033[m ]: $*" echo "" fi } echo_done() { if $terminal ; then echo -e "\033[75G[ \033[32mdone\033[m ]" fi } echo_failed(){ if $terminal && $LOGGING ; then echo -e "\033[75G[ \033[1;31mfailed\033[m ]" fi } echo_skipped() { if $terminal && $LOGGING ; then echo -e "\033[75G[ \033[90m\033[1mskipped\033[m ]" fi } # ------------- # - Check some prerequisites # ------------- # - Running in a terminal? # - if [[ -t 1 ]] ; then terminal=true else terminal=false fi # - Systemd supported ? # - systemd=$(which systemd) systemctl=$(which systemctl) systemd_supported=false if [[ -n "$systemd" ]] && [[ -n "$systemctl" ]] ; then systemd_supported=true else fatal "Support of systemd is requirred for this script" fi # ------------- # - Main Part of Script # ------------- if $terminal ; then echo -e "\n Check if networking service is enabled.." echo -e " ========================================" fi if ! $(systemctl is-enabled networking > /dev/null 2>&1) ; then error "Networking service is NOT enabled" echononl " Enable networking service.." systemctl enable networking > /dev/null 2>&1 if [[ $? -eq 0 ]] ; then echo_done else echo_failed fi else info "Networking service is enabled" fi if $terminal ; then echo -e "\n Check if networking service is active.." echo -e " =======================================" fi if ! $(systemctl is-active networking > /dev/null 2>&1) ; then error "Networking service is NOT active." echononl " (Re)start networking service.." systemctl restart networking > /dev/null 2>&1 if [[ $? -eq 0 ]] ; then echo_done else echo_failed fi else info "Networking service is active" fi clean_up 0