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

所属分类: 脚本专栏 / linux shell 阅读数: 714
收藏 0 赞 0 分享

演示效果:

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

更多精彩内容其他人还在看

linux创建用户useradd命令代码示例

本文通过代码示例给大家介绍了adduser与useradd命令二者的关系 以及使用useradd命令添加用户的方法,需要的朋友参考下吧
收藏 0 赞 0 分享

Linux 中LVS NAT 配置步骤的详解

这篇文章主要介绍了Linux 中LVS NAT 配置步骤的详解的相关资料,这里列出详细的实现步骤,需要的朋友可以参考下
收藏 0 赞 0 分享

Linux中的内核链表实例详解

这篇文章主要介绍了Linux中的内核链表实例详解的相关资料,链表中一般都要进行初始化、插入、删除、显示、释放链表,寻找节点这几个操作,需要的朋友可以参考下
收藏 0 赞 0 分享

Shell中特殊字符的用法总结大全

这篇文章主要给大家总结了关于Shell中特殊字符的相关资料,文中包括分好、&、#、!、$、大于号、单双引号等等一系列特殊字符的用法,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

Shell脚步攻略之管道重定向基础

管道是为了解决进程间通信问题而存在,它可以让两个进程之间的数据进行传递,将一个进程的输出数据传递给另一个进程作为其输入数据
收藏 0 赞 0 分享

Linux shell数组循环的实例详解

这篇文章主要介绍了Linux shell数组循环的实例详解的相关资料,这里举例说明如何实现shell数组循环,需要的朋友可以参考下
收藏 0 赞 0 分享

linux shell内置判断语句

内置判断,成功的时候返回0,不成功返回非零。接下来通过本文重点给大家介绍linux shell内置判断语句,感兴趣的的朋友一起看看吧
收藏 0 赞 0 分享

Linux文件的归档和压缩命令

文件归档命令tar,文件归档有好多好处,方便使用易于管理,接下来通过本文给大家分享linux文件的归档和压缩命令,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

Linux Shell中curl和wget使用代理IP的方法教程

这篇文章主要给大家介绍了关于在Linux Shell中curl和wget使用代理IP的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
收藏 0 赞 0 分享

Linux 日常常用指令及应用小结

最近在学习一些基本的Linux指令,在这里总结一下,在搭环境中常用的一些指令,熟悉这些指令就基本能够使用CentOS进行日常操作了
收藏 0 赞 0 分享
查看更多