From 762e6116d9ebbeccb4bfe46a0c5849127406c558 Mon Sep 17 00:00:00 2001 From: Christoph Date: Wed, 17 May 2017 02:07:59 +0200 Subject: [PATCH] check_dns.sh: redesign check_vpn.sh: redisign check_postfix.sh: Add support for Debian 9 (stretch). --- check_dns.sh | 181 +++++++++++++++++++++++++++++++++++++++++++++-- check_postfix.sh | 19 ++++- check_vpn.sh | 180 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 362 insertions(+), 18 deletions(-) diff --git a/check_dns.sh b/check_dns.sh index c505b85..7e1d155 100755 --- a/check_dns.sh +++ b/check_dns.sh @@ -1,20 +1,187 @@ #!/usr/bin/env bash -PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +check_string_ps="" +if [[ -f "/usr/sbin/named" ]] ; then + check_string_ps="/usr/sbin/named" +fi alternate_addr="oopen.de google.com heise.de debian.org ubuntu.com" + +# - used, if systemd is NOT supported +bind_init_script="" +if [[ -x "/etc/init.d/bind9" ]] ; then + bind_init_script="/etc/init.d/bind9" +fi + +# - Used if systemd is supported +# - +service_name=bind9 + +LOCK_DIR=`mktemp -d` + + +#--------------------------------------- +#----------------------------- +# Base Function(s) +#----------------------------- +#--------------------------------------- + +fatal(){ + echo "" + echo -e " [ Fatal ] $*" + echo "" + echo -e "\tScript terminated.." + echo "" + rm -rf $LOCK_DIR + exit 1 +} + +error (){ + echo "" + echo -e " [ Error ] $*" + echo "" +} + +warn (){ + echo "" + echo -e " [ Warn ] $*" + echo "" +} + +info (){ + echo "" + echo -e " [ Info ] $*" + echo "" +} + +ok (){ + echo "" + echo -e " [ Ok ] $*" + echo "" +} + +trim() { + local var="$*" + var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters + var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + echo -n "$var" +} + + +#--------------------------------------- +#----------------------------- +# Check some prerequisites +#----------------------------- +#--------------------------------------- + +# - Running in a terminal? +# - +if [[ -t 1 ]] ; then + terminal=true + LOGGING=true +else + terminal=false + LOGGING=false +fi + +# - Running in a terminal? +# - +if [[ -t 1 ]] ; then + terminal=true + LOGGING=true +else + terminal=false + LOGGING=false +fi + +if [[ -z $check_string_ps ]]; then + fatal "$(basename $0): Bind Nameservice seems NOT to be installed" +fi + +# - Systemd supported ? +# - +systemd=$(which systemd) +systemctl=$(which systemctl) + +systemd_supported=false +if [[ -n "$systemd" ]] && [[ -n "$systemctl" ]] ; then + systemd_supported=true +else + if [[ ! -x $bind_init_script ]]; then + fatal "$(basename $0): Missing Bind Init-Script!" + fi +fi + + +#--------------------------------------- +#----------------------------- +# Check if Bind Nameservice is running +#----------------------------- +#--------------------------------------- + +if $LOGGING ; then + echo -e "\n Check if Bind Nameservice is running.." + echo -e " ======================================" +fi + for ip_addr in $alternate_addr ; do - ping -c3 $ip_addr >/dev/null 2> /dev/null + ping -c3 $ip_addr >> /dev/null 2>&1 if [ $? -eq 0 ]; then - exit 0 + + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + if [[ "X${PID}" = "X" ]]; then + break + else + + if $LOGGING ; then + ok "Bind Nameservice is up and running." + fi + exit 0 + fi fi done; -/etc/init.d/bind9 restart +error "Bind Nameservice seems to be down! Trying to restart service now.." -echo "" -echo "[ Info ]: Restartet Nameservice bind on host `hostname --long` at `date +\"%d.%m.%Y %H:%M:%S\"`" -echo "" +if $systemd_supported ; then + $systemctl stop $service_name > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi + sleep 10 + $systemctl start $service_name > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi +else + $bind_init_script stop > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Stopping Bind Nameservice failed!" + fi + sleep 10 + $bind_init_script start > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Starting Bind Nameservice failed!" + fi +fi + +declare -i counter=0 +PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') +while [[ "X${PID}" = "X" ]]; do + sleep 1 + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + if [[ $counter -gt 10 ]]; then + break + else + ((counter++)) + fi +done + +if [[ "X${PID}" = "X" ]] ; then + error "Restarting Bind Nameservice failed!" +else + ok "Bind Nameservice is up and running." +fi exit 0; diff --git a/check_postfix.sh b/check_postfix.sh index 3cd878e..33472a5 100755 --- a/check_postfix.sh +++ b/check_postfix.sh @@ -1,7 +1,9 @@ #!/usr/bin/env bash check_string_ps="" -if [[ -x "/usr/lib/postfix/master" ]] ; then +if [[ -x /usr/lib/postfix/sbin/master ]]; then + check_string_ps="/usr/lib/postfix/sbin/master" +elif [[ -x "/usr/lib/postfix/master" ]] ; then check_string_ps="/usr/lib/postfix/master" elif [[ -x "/usr/libexec/postfix/master" ]] ; then check_string_ps="/usr/libexec/postfix/master" @@ -108,7 +110,7 @@ if $LOGGING ; then echo -e "\n Check if Postfix Mailservice is running.." echo -e " =========================================" fi -if ! ps ax | grep -e "\ ${check_string_ps}" | grep -v grep > /dev/null ; then +if ! ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}" | grep -v grep > /dev/null ; then error "Postfix Mailservice seems to be down! Trying to restart service now.." if $systemd_supported ; then @@ -133,8 +135,19 @@ if ! ps ax | grep -e "\ ${check_string_ps}" | grep -v grep > /dev/null ; then fi fi + declare -i counter=0 + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + while [[ "X${PID}" = "X" ]]; do + sleep 1 + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + if [[ $counter -gt 10 ]]; then + break + else + ((counter++)) + fi + done - if ! ps ax | grep -e "\ ${check_string_ps}" | grep -v grep > /dev/null ; then + if [[ "X${PID}" = "X" ]] ; then error "Restarting Postfix Mailservice failed!" else ok "Postfix Mailservice is up and running." diff --git a/check_vpn.sh b/check_vpn.sh index 0467e2f..8720c33 100755 --- a/check_vpn.sh +++ b/check_vpn.sh @@ -1,13 +1,177 @@ #!/usr/bin/env bash -PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - -if ! ps ax | grep openvpn | grep -v grep > /dev/null ; then - echo -e "\n\tOpenVPN is not running. so i'm going to (re)start the vpn service..\n" - /etc/init.d/openvpn stop - kill -9 `cat /var/run/openvpn.server.pid 2>/dev/null` > /dev/null 2>&1 - rm -f /var/run/openvpn.server.pid - /etc/init.d/openvpn start +check_string_ps="" +if [[ -f "/usr/sbin/openvpn" ]] ; then + check_string_ps="/usr/sbin/openvpn --daemon" fi + +# - used, if systemd is NOT supported +init_script="" +if [[ -x "/etc/init.d/openvpn" ]] ; then + init_script="/etc/init.d/openvpn" +fi + +# - Used if systemd is supported +# - +service_name=openvpn + +LOCK_DIR=`mktemp -d` + + +#--------------------------------------- +#----------------------------- +# Base Function(s) +#----------------------------- +#--------------------------------------- + +fatal(){ + echo "" + echo -e " [ Fatal ] $*" + echo "" + echo -e "\tScript terminated.." + echo "" + rm -rf $LOCK_DIR + exit 1 +} + +error (){ + echo "" + echo -e " [ Error ] $*" + echo "" +} + +warn (){ + echo "" + echo -e " [ Warn ] $*" + echo "" +} + +info (){ + echo "" + echo -e " [ Info ] $*" + echo "" +} + +ok (){ + echo "" + echo -e " [ Ok ] $*" + echo "" +} + +trim() { + local var="$*" + var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters + var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + echo -n "$var" +} + + +#--------------------------------------- +#----------------------------- +# Check some prerequisites +#----------------------------- +#--------------------------------------- + +# - Running in a terminal? +# - +if [[ -t 1 ]] ; then + terminal=true + LOGGING=true +else + terminal=false + LOGGING=false +fi + +# - Running in a terminal? +# - +if [[ -t 1 ]] ; then + terminal=true + LOGGING=true +else + terminal=false + LOGGING=false +fi + +if [[ -z $check_string_ps ]]; then + fatal "$(basename $0): OpenVPN Service seems NOT to be installed" +fi + +# - Systemd supported ? +# - +systemd=$(which systemd) +systemctl=$(which systemctl) + +systemd_supported=false +if [[ -n "$systemd" ]] && [[ -n "$systemctl" ]] ; then + systemd_supported=true +else + if [[ ! -x $init_script ]]; then + fatal "$(basename $0): Missing Bind Init-Script!" + fi +fi + + +#--------------------------------------- +#----------------------------- +# Check if OpenVPN Service is running +#----------------------------- +#--------------------------------------- + +if $LOGGING ; then + echo -e "\n Check if OpenVPN Service is running.." + echo -e " =====================================" +fi + +PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') +if [[ "X${PID}" = "X" ]]; then + + error "OpenVPN Service seems to be down! Trying to restart service now.." + + if $systemd_supported ; then + $systemctl stop $service_name > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi + sleep 10 + $systemctl start $service_name > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi + else + $init_script stop > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Stopping OpenVPN Service failed!" + fi + sleep 10 + $init_script start > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Starting OpenVPN Service failed!" + fi + fi + + declare -i counter=0 + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + while [[ "X${PID}" = "X" ]]; do + sleep 1 + PID=$(ps -e f | grep -E "[[:digit:]]\ ${check_string_ps}"| grep -v grep | awk '{print$2}') + if [[ $counter -gt 10 ]]; then + break + else + ((counter++)) + fi + done + + if [[ "X${PID}" = "X" ]] ; then + error "Restarting OpenVPN Service failed!" + else + ok "OpenVPN Service is up and running." + fi + +else + if $LOGGING ; then + ok "OpenVPN Service is up and running." + fi +fi + exit 0;