From 071d63704904758b5f65371dc63f38cd75b0683d Mon Sep 17 00:00:00 2001 From: qtwrk Date: Tue, 4 Aug 2020 02:39:32 +0200 Subject: [PATCH 1/3] minor improvement --- CPScripts/watchdog.sh | 108 ++++++++++++++++++++++++++++++++++++++++++ cyberpanel.sh | 14 ++++-- cyberpanel_utility.sh | 2 +- 3 files changed, 118 insertions(+), 6 deletions(-) create mode 100644 CPScripts/watchdog.sh diff --git a/CPScripts/watchdog.sh b/CPScripts/watchdog.sh new file mode 100644 index 000000000..cfd58629f --- /dev/null +++ b/CPScripts/watchdog.sh @@ -0,0 +1,108 @@ +#!/bin/bash + +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 "\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:" +echo -e "TO=address@email.com" +echo -e "SENDER=sender name" +echo -e "FROM=sender@email.com" +echo -e "You may proceed without flag file , but that will make email sending failed." +} + +watchdog_check() { +echo -e "\nChecking LiteSpeed ..." +pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') + if [[ "$pid" == "" ]] ; then + echo -e "\nWatchDog for LSWS is gone , restarting..." + nohup watchdog lsws > /dev/null 2>&1 & + echo -e "\nWatchDog for LSWS has been started..." + else + 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 + echo -e "\nWatchDog for MariaDB is gone , restarting..." + nohup watchdog mariadb > /dev/null 2>&1 & + echo -e "\nWatchDog for MariaDB has been started..." + else + echo -e "\nWatchDog for MariaDB is running...\n" + echo $(ps aux | grep "watchdog mariadb" | grep -v grep) + fi +} + +if [[ $1 == "mariadb" ]] || [[ $1 == "database" ]] || [[ $1 == "mysql" ]] ; then + NAME="mariadb" + echo "Watchdog on MariaDB is started up ..." +elif [[ $1 == "web" ]] || [[ $1 == "lsws" ]] || [[ $1 == "litespeed" ]] || [[ $1 == "openlitespeed" ]] ; then + NAME="lsws" + echo "Watchdog on LiteSpeed is started up ..." +elif [[ $1 == "help" ]] || [[ $1 == "-h" ]] || [[ $1 == "--help" ]] || [[ $1 == "" ]] ; then + show_help +exit +elif [[ $1 == "check" ]] || [[ $1 == "status" ]] ; then + watchdog_check + exit +elif [[ $1 == "kill" ]] ; then +pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') +if [[ "$pid" != "" ]] ; then +kill -15 $pid +fi +pid=$(ps aux | grep "watchdog mariadb" | grep -v grep | awk '{print $2}') +if [[ "$pid" != "" ]] ; then +kill -15 $pid +fi +echo "watchdo has been killed..." +exit +else +show_help + +echo -e "\n\n\nunknown service name..." +exit +fi + + + +while [ true = true ] + do + 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}') + echo "-1000" > /proc/$pid/oom_score_adj + 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}') + echo "-1000" > /proc/$pid/oom_score_adj + 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 < /etc/yum.repos.d/CyberPanel.repo + curl https://$GIT_CONTENT_URL/v2.0.1/install/CyberPanel.repo > /etc/yum.repos.d/CyberPanel.repo fi fi @@ -485,7 +485,7 @@ if [[ $SERVER_OS == "Ubuntu" ]] ; then DEBIAN_FRONTEND=noninteractive apt install -y lsphp72-memcached DEBIAN_FRONTEND=noninteractive apt install -y lsphp71-memcached DEBIAN_FRONTEND=noninteractive apt install -y lsphp70-memcached - + if [[ $TOTAL_RAM -eq "2048" ]] || [[ $TOTAL_RAM -gt "2048" ]] ; then DEBIAN_FRONTEND=noninteractive apt install build-essential zlib1g-dev libexpat1-dev openssl libssl-dev libsasl2-dev libpcre3-dev git -y wget https://$DOWNLOAD/litespeed/lsmcd.tar.gz @@ -656,21 +656,25 @@ check_process() { if systemctl is-active --quiet httpd; then systemctl disable httpd systemctl stop httpd + systemctl mask httpd echo -e "\nhttpd process detected, disabling...\n" fi if systemctl is-active --quiet apache2; then systemctl disable apache2 systemctl stop apache2 + systemctl mask apache2 echo -e "\napache2 process detected, disabling...\n" fi if systemctl is-active --quiet named; then systemctl stop named systemctl disable named + systemctl mask named echo -e "\nnamed process detected, disabling...\n" fi if systemctl is-active --quiet exim; then systemctl stop exim systemctl disable exim + systemctl mask exim echo -e "\nexim process detected, disabling...\n" fi } @@ -1423,11 +1427,11 @@ fi echo -e "\033[0;32mTCP: 21\033[39m and \033[0;32mTCP: 40110-40210\033[39m for FTP" echo -e "\033[0;32mTCP: 25\033[39m, \033[0;32mTCP: 587\033[39m, \033[0;32mTCP: 465\033[39m, \033[0;32mTCP: 110\033[39m, \033[0;32mTCP: 143\033[39m and \033[0;32mTCP: 993\033[39m for mail service" echo -e "\033[0;32mTCP: 53\033[39m and \033[0;32mUDP: 53\033[39m for DNS service" - + if ! timeout 3 telnet mx.zoho.com 25 | grep "Escape" > /dev/null 2>&1 ; then echo -e "Your provider seems \e[31mblocked\033[39m port 25 , E-mail sending may \e[31mnot\033[39m work properly." fi - + if [[ $SERVER_COUNTRY = CN ]] ; then if [[ $PROVIDER == "Tencent Cloud" ]] ; then if [[ $SERVER_OS == "Ubuntu" ]] ; then diff --git a/cyberpanel_utility.sh b/cyberpanel_utility.sh index 55b06a542..b1173a214 100644 --- a/cyberpanel_utility.sh +++ b/cyberpanel_utility.sh @@ -47,7 +47,7 @@ read TMP_YN if [[ $TMP_YN == "1" ]] ; then if [[ ! -f /etc/cyberpanel/watchdog.sh ]] ; then echo -e "\nWatchDog no found..." - wget -O /etc/cyberpanel/watchdog.sh https://cyberpanel.sh/misc/watchdog.sh + wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/$BRANCH_NAME/CPScripts/watchdog.sh chmod 700 /etc/cyberpanel/watchdog.sh ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog echo -e "\nWatchDos has been installed..." From 8d7d883718452ea136beab4df95a6c160bd89a58 Mon Sep 17 00:00:00 2001 From: qtwrk Date: Wed, 5 Aug 2020 15:19:34 +0200 Subject: [PATCH 2/3] Update cyberpanel.sh --- cyberpanel.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cyberpanel.sh b/cyberpanel.sh index 6fb499930..67d5cd1c9 100644 --- a/cyberpanel.sh +++ b/cyberpanel.sh @@ -73,7 +73,7 @@ fi watchdog_setup() { if [[ $WATCHDOG == "ON" ]] ; then -wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/$BRANCH_NAME/CPScripts/watchdog.sh +wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/stable/CPScripts/watchdog.sh chmod 700 /etc/cyberpanel/watchdog.sh ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog pid=$(ps aux | grep "watchdog lsws" | grep -v grep | awk '{print $2}') From 2dd326fc65952d0603c1a95943c898beac1d4f8d Mon Sep 17 00:00:00 2001 From: qtwrk Date: Wed, 5 Aug 2020 15:19:55 +0200 Subject: [PATCH 3/3] Update cyberpanel_utility.sh --- cyberpanel_utility.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cyberpanel_utility.sh b/cyberpanel_utility.sh index b1173a214..66262c462 100644 --- a/cyberpanel_utility.sh +++ b/cyberpanel_utility.sh @@ -50,10 +50,10 @@ if [[ $TMP_YN == "1" ]] ; then wget -O /etc/cyberpanel/watchdog.sh https://$GIT_CONTENT_URL/$BRANCH_NAME/CPScripts/watchdog.sh chmod 700 /etc/cyberpanel/watchdog.sh ln -s /etc/cyberpanel/watchdog.sh /usr/local/bin/watchdog - echo -e "\nWatchDos has been installed..." + echo -e "\nWatchDog has been installed..." set_watchdog else - echo -e "\nWatchDos is already installed..." + echo -e "\nWatchDog is already installed..." set_watchdog fi elif [[ $TMP_YN == "2" ]] ; then