From 66ad72af4c733ae123e7ec0187c9b83f9621666c Mon Sep 17 00:00:00 2001 From: Christoph Date: Thu, 27 Dec 2018 17:49:50 +0100 Subject: [PATCH] check_webservice_load.sh: don't start/stop services if package management (apt,dpkg,..) ist running. --- check_postfix.sh | 107 ++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 91 insertions(+), 16 deletions(-) diff --git a/check_postfix.sh b/check_postfix.sh index 2629e21..c65f28d 100755 --- a/check_postfix.sh +++ b/check_postfix.sh @@ -82,6 +82,35 @@ ok (){ echo "" } +detect_os () { + + if $(which lsb_release > /dev/null 2>&1) ; then + + os_dist="$(lsb_release -i | awk '{print tolower($3)}')" + os_version="$(lsb_release -r | awk '{print tolower($2)}')" + os_codename="$(lsb_release -c | awk '{print tolower($2)}')" + + if [[ "$os_dist" = "debian" ]]; then + if $(echo "$os_version" | grep -q '\.') ; then + os_version=$(echo "$os_version" | cut --delimiter='.' -f1) + fi + fi + + elif [[ -e "/etc/os-release" ]]; then + + . /etc/os-release + + os_dist=$ID + os_version=${VERSION_ID} + + fi + + # remove whitespace from os_dist and os_version + os_dist="${os_dist// /}" + os_version="${os_version// /}" + +} + trim() { local var="$*" var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters @@ -124,6 +153,10 @@ else fi fi +# - Detect linux distribution +# - +detect_os + #--------------------------------------- #----------------------------- @@ -138,31 +171,73 @@ fi 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 $systemctl daemon-reload > /dev/null 2> ${LOCK_DIR}/err_msg.log if [[ $? -ne 0 ]]; then error "$(cat ${LOCK_DIR}/err_msg.log)" fi sleep 2 - $systemctl stop postfix > /dev/null 2> ${LOCK_DIR}/err_msg.log - if [[ $? -ne 0 ]]; then - error "$(cat ${LOCK_DIR}/err_msg.log)" - fi - sleep 10 - $systemctl start postfix > /dev/null 2> ${LOCK_DIR}/err_msg.log - if [[ $? -ne 0 ]]; then - error "$(cat ${LOCK_DIR}/err_msg.log)" + + # - Don't Start/Stop Services if package management is running (apt,aptitude,dpkg) + # - + if [[ "${os_dist,,}" = "debian" ]] || [[ "${os_dist,,}" = "ubuntu" ]] ; then + if $(lsof /var/lib/dpkg/lock >/dev/null 2>&1) ; then + warn "It seems that package management (apt,dpkg) is running. Exiting restarting the service .." + else + $systemctl stop postfix > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi + + sleep 10 + + # - Don't Start/Stop Services if package management is running (apt,aptitude,dpkg) + # - + if [[ "${os_dist,,}" = "debian" ]] || [[ "${os_dist,,}" = "ubuntu" ]] ; then + if $(lsof /var/lib/dpkg/lock >/dev/null 2>&1) ; then + warn "It seems that package management (apt,dpkg) is running. Omit starting the service .." + else + $systemctl start postfix > /dev/null 2> ${LOCK_DIR}/err_msg.log + if [[ $? -ne 0 ]]; then + error "$(cat ${LOCK_DIR}/err_msg.log)" + fi + fi + fi + fi fi + else - $postfix_init_script stop > /dev/null 2>&1 - if [[ $? -ne 0 ]]; then - error "Stopping Postfix Mailservice failed!" - fi - sleep 10 - $postfix_init_script start > /dev/null 2>&1 - if [[ $? -ne 0 ]]; then - error "Starting Postfix Mailservice failed!" + + # - Don't Start/Stop Services if package management is running (apt,aptitude,dpkg) + # - + if [[ "${os_dist,,}" = "debian" ]] || [[ "${os_dist,,}" = "ubuntu" ]] ; then + if $(lsof /var/lib/dpkg/lock >/dev/null 2>&1) ; then + warn "It seems that package management (apt,dpkg) is running - Exiting restarting the service .." + else + $postfix_init_script stop > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Stopping Postfix Mailservice failed!" + fi + + sleep 10 + + # - Don't Start/Stop Services if package management is running (apt,aptitude,dpkg) + # - + if [[ "${os_dist,,}" = "debian" ]] || [[ "${os_dist,,}" = "ubuntu" ]] ; then + if $(lsof /var/lib/dpkg/lock >/dev/null 2>&1) ; then + warn "It seems that package management (apt,dpkg) is running. Omit starting the service .." + else + $postfix_init_script start > /dev/null 2>&1 + if [[ $? -ne 0 ]]; then + error "Starting Postfix Mailservice failed!" + fi + fi + fi + + fi fi + fi declare -i counter=0