当前位置: 移动技术网 > 网络运营>服务器>Linux > Shell实现多级菜单系统安装维护脚本实例分享

Shell实现多级菜单系统安装维护脚本实例分享

2017年12月12日  | 移动技术网网络运营  | 我要评论

演示效果:

1、一级菜单

2、二级菜单

3、执行操作

脚本参考:

复制代码 代码如下:

#!/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
;;
#网络服务
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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网