From c6b1593bddf94f4be955bc84ded3c05c407218bc Mon Sep 17 00:00:00 2001 From: Brett Date: Sun, 1 Aug 2021 01:54:41 +1000 Subject: [PATCH] Watchdog updated to include Dovecot, Postfix, PowerDNS, and Pure-FTPd --- CPScripts/watchdog.sh | 193 ++++++++++++++++++++++++++++++---------- manageServices/views.py | 8 ++ 2 files changed, 153 insertions(+), 48 deletions(-) diff --git a/CPScripts/watchdog.sh b/CPScripts/watchdog.sh index 2904b8e62..19e8889ef 100644 --- a/CPScripts/watchdog.sh +++ b/CPScripts/watchdog.sh @@ -2,7 +2,7 @@ show_help() { echo -e "\nrun command: \e[31mnohup bash /etc/cyberpanel/watchdog.sh SERVICE_NAME >/dev/null 2>&1 &\e[39m" -echo -e "\nreplace \e[31mSERVICE_NAME\e[39m to the service name, acceptable word: \e[31mmariadb\e[39m or \e[31mlsws\e[39m" +echo -e "\nreplace \e[31mSERVICE_NAME\e[39m to the service name, acceptable word: \e[31mmariadb\e[39m, \e[31mlsws\e[39m, \e[31mpowerdns\e[39m, \e[31mdovecot\e[39m, \e[31mpostfix\e[39m, or \e[31mpureftpd\e[39m" echo -e "\nWatchdog will check service status every 60 seconds and tries to restart if it is not running and also send an email to designated address" echo -e "\nto exit watchdog , run command \e[31mbash /etc/cyberpanel/watchdog.sh kill\e[39m" echo -e "\n\nplease also create \e[31m/etc/cyberpanel/watchdog.flag\e[39m file with following format:" @@ -23,6 +23,7 @@ pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') echo -e "\nWatchDog for LSWS is running...\n" echo $(ps aux | grep "watchdog lsws" | grep -v grep) fi + echo -e "\nChecking MariaDB ..." pid=$(ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}') if [[ "$pid" == "" ]] ; then @@ -33,6 +34,100 @@ pid=$(ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}') echo -e "\nWatchDog for MariaDB is running...\n" echo $(ps aux | grep "watchdog mariadb" | grep -v grep) fi + +echo -e "\nChecking PowerDNS ..." +pid=$(ps aux | grep "watchdog powerdns" | grep -v grep | awk '{print $2}') + if [[ "$pid" == "" ]] ; then + echo -e "\nWatchDog for PowerDNS is gone , restarting..." + nohup watchdog powerdns > /dev/null 2>&1 & + echo -e "\nWatchDog for PowerDNS has been started..." + else + echo -e "\nWatchDog for PowerDNS is running...\n" + echo $(ps aux | grep "watchdog powerdns" | grep -v grep) + fi + +echo -e "\nChecking Dovecot ..." +pid=$(ps aux | grep "watchdog dovecot" | grep -v grep | awk '{print $2}') + if [[ "$pid" == "" ]] ; then + echo -e "\nWatchDog for Dovecot is gone , restarting..." + nohup watchdog dovecot > /dev/null 2>&1 & + echo -e "\nWatchDog for Dovecot has been started..." + else + echo -e "\nWatchDog for Dovecot is running...\n" + echo $(ps aux | grep "watchdog dovecot" | grep -v grep) + fi + +echo -e "\nChecking Postfix ..." +pid=$(ps aux | grep "watchdog postfix" | grep -v grep | awk '{print $2}') + if [[ "$pid" == "" ]] ; then + echo -e "\nWatchDog for Postfix is gone , restarting..." + nohup watchdog postfix > /dev/null 2>&1 & + echo -e "\nWatchDog for Postfix has been started..." + else + echo -e "\nWatchDog for Postfix is running...\n" + echo $(ps aux | grep "watchdog postfix" | grep -v grep) + fi + +echo -e "\nChecking Pure-FTPd ..." +pid=$(ps aux | grep "watchdog pureftpd" | grep -v grep | awk '{print $2}') + if [[ "$pid" == "" ]] ; then + echo -e "\nWatchDog for Pure-FTPd is gone , restarting..." + nohup watchdog pureftpd > /dev/null 2>&1 & + echo -e "\nWatchDog for Pure-FTPd has been started..." + else + echo -e "\nWatchDog for Pure-FTPd is running...\n" + echo $(ps aux | grep "watchdog pureftpd" | grep -v grep) + fi +} + +check_service() { + systemctl status $NAME 2>&1>/dev/null + if [[ $? == "0" ]] ; then + if [[ $NAME == "mariadb" ]] ; then + pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') + if [[ $pid != "" ]] ; then + echo "-1000" > /proc/$pid/oom_score_adj + fi + pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') + if [[ $pid != "" ]] ; then + echo "-1000" > /proc/$pid/oom_score_adj + fi + fi + echo "$NAME service is running..." + else + echo "$NAME is down , try to restart it..." + if [[ $NAME == "lsws" ]] ; then + pkill lsphp + fi + if [[ $NAME == "mariadb" ]] ; then + pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') + if [[ $pid != "" ]] ; then + echo "-1000" > /proc/$pid/oom_score_adj + fi + pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') + if [[ $pid != "" ]] ; then + echo "-1000" > /proc/$pid/oom_score_adj + fi + fi + systemctl stop $NAME + systemctl start $NAME + if [ -f /etc/cyberpanel/watchdog.flag ] ; then + flag="/etc/cyberpanel/watchdog.flag" + LINE3=$(awk 'NR==3' $flag) + LINE2=$(awk 'NR==2' $flag) + LINE1=$(awk 'NR==1' $flag) + + FROM=${LINE3#*=} + SENDER=${LINE2#*=} + TO=${LINE1#*=} + sendmail -F $SENDER -f $FROM -i $TO <&1>/dev/null - if [[ $? == "0" ]] ; then - if [[ $NAME == "mariadb" ]] ; then - pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') - if [[ $pid != "" ]] ; then - echo "-1000" > /proc/$pid/oom_score_adj - fi - pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') - if [[ $pid != "" ]] ; then - echo "-1000" > /proc/$pid/oom_score_adj - fi - fi - echo "$NAME service is running..." - else - echo "$NAME is down , try to restart it..." - if [[ $NAME == "lsws" ]] ; then - pkill lsphp - fi - if [[ $NAME == "mariadb" ]] ; then - pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') - if [[ $pid != "" ]] ; then - echo "-1000" > /proc/$pid/oom_score_adj - fi - pid=$(ps aux | grep "/usr/sbin/mysqld" | grep -v grep | awk '{print $2}') - if [[ $pid != "" ]] ; then - echo "-1000" > /proc/$pid/oom_score_adj - fi - fi - systemctl stop $NAME - systemctl start $NAME - if [ -f /etc/cyberpanel/watchdog.flag ] ; then - flag="/etc/cyberpanel/watchdog.flag" - LINE3=$(awk 'NR==3' $flag) - LINE2=$(awk 'NR==2' $flag) - LINE1=$(awk 'NR==1' $flag) - - FROM=${LINE3#*=} - SENDER=${LINE2#*=} - TO=${LINE1#*=} - sendmail -F $SENDER -f $FROM -i $TO <