Shell實(shí)現(xiàn)多級(jí)菜單系統(tǒng)安裝維護(hù)腳本實(shí)例分享
更新時(shí)間:2014年12月01日 10:28:55 投稿:junjie
這篇文章主要介紹了Shell實(shí)現(xiàn)多級(jí)菜單系統(tǒng)安裝維護(hù)腳本實(shí)例分享,本文腳本用多級(jí)菜單實(shí)現(xiàn)管理WEB服務(wù)器、Mysql服務(wù)器、Nginx服器等,需要的朋友可以參考下
演示效果:
1、一級(jí)菜單
2、二級(jí)菜單
3、執(zhí)行操作
腳本參考:
復(fù)制代碼 代碼如下:
#!/bin/bash
#author lic(oldboy linux student)
#date 1304
DISK_NO="/dev/sda1"
NGINX_DIR="/usr/local/tdoa/nginx/sbin/nginx"
MYSQL_DIR="/usr/local/tdoa/mysql/bin/mysqld_safe"
SERVER1="WEB"
SERVER2="MYSQL"
SERVER1_START="/usr/local/tdoa/nginx/sbin/nginx"
SERVER1_STOP="kill -QUIT `cat /usr/local/tdoa/logs/nginx/nginx.pid`"
SERVER1_RESTART="kill -HUP `cat /usr/local/tdoa/logs/nginx/nginx.pid`"
SERVER2_START="/etc/init.d/mysql start"
SERVER2_STOP="/etc/init.d/mysql stop"
SERVER2_RESTART="/etc/init.d/mysql restart"
#date
DATE=`date +"%y-%m-%d %H:%M:%S"`
#ip
IPADDR=`ifconfig eth0|grep 'inet addr'|sed 's/^.*addr://g' |sed 's/Bcast:.*$//g'`
#hostname
HOSTNAME=`hostname -s`
#user
USER=`whoami`
#disk_check
DISK_SDA=`df -h | grep $DISK_NO | awk '{print $5}'`
#cpu_average_check
cpu_uptime=`cat /proc/loadavg | cut -c1-14`
#process_check
function process_check() {
for dir in $NGINX_DIR $MYSQL_DIR
do
process_count=$(ps -ef | grep "$dir" | grep -v grep | wc -l)
for service in nginx mysql
do
echo "$dir" |grep -q "$service"
if [ $? -eq 0 ]
then
if [ $process_count -eq 0 ]
then
echo "$service.......................[NOT RUN]"
else
echo "$service.......................[RUNNING]"
continue
fi
fi
done
done
}
declare flag=0
clear
while [ "$flag" -eq 0 ]
do
echo "========================================"
process_check
echo "========================================"
cat << EOF
|-----------System Infomation-----------
| DATE :$DATE
| HOSTNAME :$HOSTNAME
| USER :$USER
| IP :$IPADDR
| DISK_USED :$DISK_SDA
| CPU_AVERAGE:$cpu_uptime
----------------------------------------
|****Please Enter Your Choice:[0-5]****|
----------------------------------------
(1) Configure $SERVER1 Service
(2) Configure $SERVER2 Service
(3) Configure NETWORKE Service
(4) Change Passwd
(5) Logs
(0) Quit
EOF
read -p "Please enter your choice[0-5]: " input
case $input in
#web service
1)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) Start $SERVER1 Service
(2) Stop $SERVER1 Service
(3) ReStart $SERVER1 Service
(0) Back
EOF
read -p "Please enter your choice[0-3]: " input1
case $input1 in
1)
echo -e "\n>>>>>>>>>>>$DATE Start $SERVER1">>/log.txt
$SERVER1_START 2>>/log.txt
if [ $? == 0 ];then
echo "Start $SERVER1......................................................[OK]"
else
echo "Start $SERVER1......................................................[FAILED]"
fi
sleep 5
clear
;;
2)
echo -e "\n>>>>>>>>>>>$DATE Stop $SERVER1">>/log.txt
$SERVER1_STOP 2>>/log.txt
if [ $? == 0 ];then
echo "Stop $SERVER1.......................................................[OK]"
else
echo "Stop $SERVER1.......................................................[FAILED]"
fi
sleep 5
clear
;;
3)
echo -e "\n>>>>>>>>>>>$DATE ReStart $SERVER1">>/log.txt
/usr/local/tdoa/php/sbin/php-fpm restart 2>>/log.txt
$SERVER1_RESTART 2>>/log.txt
if [ $? == 0 ];then
echo "Restart $SERVER1....................................................[OK]"
else
echo "Restart $SERVER1....................................................[FAILED]"
fi
sleep 5
clear
;;
0)
clear
break
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
for i in `seq -w 10 -1 1`
do
echo -ne "\b\b$i";
sleep 1;
done
clear
;;
esac
done
;;
#mysql service
2)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) Start $SERVER2 Service
(2) Stop $SERVER2 Service
(3) ReStart $SERVER2 Service
(0) Back
EOF
read -p "Please enter your Choice[0-3]: " input2
case $input2 in
1)
echo -e "\n>>>>>>>>>>>$DATE Start $SERVER2">>/log.txt
$SERVER2_START 2>>/log.txt
if [ $? == 0 ];then
echo "Start $SERVER2......................................................[OK]"
else
echo "Start $SERVER2......................................................[FAILED]"
fi
sleep 5
clear
;;
2)
echo -e "\n>>>>>>>>>>>$DATE Stop $SERVER2">>/log.txt
$SERVER2_STOP 2>>/log.txt
if [ $? == 0 ];then
echo "Stop $SERVER2.......................................................[OK]"
else
echo "Stop $SERVER2.......................................................[FAILED]"
fi
sleep 5
clear
;;
3)
echo -e "\n>>>>>>>>>>>$DATE ReStart $SERVER2">>/log.txt
$SERVER2_RESTART 2>>/log.txt
if [ $? == 0 ];then
echo "Restart $SERVER2....................................................[OK]"
else
echo "Restart $SERVER2....................................................[FAILED]"
fi
sleep 5
clear
;;
0)
clear
break
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
for i in `seq -w 10 -1 1`
do
echo -ne "\b\b$i";
sleep 1;
done
clear
;;
esac
done
;;
#網(wǎng)絡(luò)服務(wù)
3)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) ReStart NETWORK Service
(2) Configure NETWORK Service
(0) Back
EOF
read -p "Please enter your Choice[0-3]: " input3
case $input3 in
1)
echo -e "\n>>>>>>>>>>>$DATE ReStart Network">>/log.txt
/etc/init.d/network restart 2>>/log.txt
if [ $? == 0 ];then
echo "Restart Network.....................................................[OK]"
else
echo "Restart Network.....................................................[FAILED]"
fi
sleep 5
clear
;;
2)
clear
setup
clear
;;
0)
clear
break
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
for i in `seq -w 10 -1 1`
do
echo -ne "\b\b$i";
sleep 1;
done
clear
;;
esac
done
;;
4)
clear
while [ "$flag" -eq 0 ]
do
cat << EOF
----------------------------------------
|****Please Enter Your Choice:[0-3]****|
----------------------------------------
(1) Change ROOT Passwd
(2) Change Samba Passwd
(0) Back
EOF
read -p "Please enter your Choice[0-3]: " input5
case $input5 in
1)
echo -e "\n>>>>>>>>>>>$DATE Change System Administertor Root Passwd\n">>/log.txt
passwd root 2>>/log.txt
if [ $? == 0 ];then
echo "Change ROOT Passwd.....................................................[OK]"
else
echo "Change ROOT Passwd.....................................................[FAILED]"
fi
sleep 5
clear
;;
2)
echo -e "\n>>>>>>>>>>>$DATE Change Samba Passwd">>/log.txt
smbpasswd -a tdoa 2>>/log.txt
if [ $? == 0 ];then
echo "Change Samba Passwd.....................................................[OK]"
else
echo "Change Samba Passwd.....................................................[FAILED]"
fi
sleep 5
clear
;;
0)
clear
break
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
sleep 8
clear
;;
esac
done
;;
5)
clear
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo "|"
less /log.txt
echo "|"
echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
;;
0)
clear
exit 0
;;
*) echo "----------------------------------"
echo "| Warning!!! |"
echo "| Please Enter Right Choice! |"
echo "----------------------------------"
for i in `seq -w 10 -1 1`
do
echo -ne "\b\b$i";
sleep 1;
done
clear
;;
esac
done
您可能感興趣的文章:
相關(guān)文章
如何編寫健壯的Bash腳本(經(jīng)驗(yàn)分享)
本文介紹下,編寫出健壯的bash shell腳本的方法,感興趣的朋友參考學(xué)習(xí)下2013-11-11Shell腳本實(shí)現(xiàn)在Linux系統(tǒng)中自動(dòng)安裝JDK
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)在Linux系統(tǒng)中自動(dòng)安裝JDK,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-01-01shell腳本實(shí)現(xiàn)定時(shí)檢查應(yīng)用狀態(tài)步驟
這篇文章主要為大家介紹了shell腳本實(shí)現(xiàn)定時(shí)檢查應(yīng)用狀態(tài)步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果
腳本中常常要獲取一些命令的執(zhí)行結(jié)果,比如當(dāng)前目錄pwd、當(dāng)前時(shí)間date等等,下面這篇文章主要給大家介紹了關(guān)于Linux?Shell腳本中如何獲取命令運(yùn)行的結(jié)果,需要的朋友可以參考下2023-06-06Linux實(shí)現(xiàn)文件定期本地備份/異地備份/刪除備份的腳本
數(shù)據(jù)備份的意義就在于,當(dāng)受到網(wǎng)絡(luò)攻擊、入侵、電源故障或者操作失誤等事故的發(fā)生后,可以完整、快速、簡(jiǎn)捷、可靠地恢復(fù)原有系統(tǒng)。本文為大家準(zhǔn)備了文件定期本地備份/異地備份/刪除備份的腳本,希望對(duì)你們有所幫助2022-10-10