草庐IT

多级菜单系统安装维护shell脚本实现企业级案例

老男孩oldboy 2023-03-28 原文
演示效果:

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 

有关多级菜单系统安装维护shell脚本实现企业级案例的更多相关文章

  1. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

  2. ruby - 完全离线安装RVM - 2

    我打算为ruby​​脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 如何为 emacs 安装 ruby​​-mode - 2

    我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby​​提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 通过 RVM (OSX Mountain Lion) 安装 Ruby 2.0.0-p247 时遇到问题 - 2

    我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search

  7. ruby - 如何在 Lion 上安装 Xcode 4.6,需要用 RVM 升级 ruby - 2

    我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121

  8. ruby - Fast-stemmer 安装问题 - 2

    由于fast-stemmer的问题,我很难安装我想要的任何ruby​​gem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=

  9. ruby-on-rails - 如何在 ruby​​ 交互式 shell 中有多行? - 2

    这可能是个愚蠢的问题。但是,我是一个新手......你怎么能在交互式ruby​​shell中有多行代码?好像你只能有一条长线。按回车键运行代码。无论如何我可以在不运行代码的情况下跳到下一行吗?再次抱歉,如果这是一个愚蠢的问题。谢谢。 最佳答案 这是一个例子:2.1.2:053>a=1=>12.1.2:054>b=2=>22.1.2:055>a+b=>32.1.2:056>ifa>b#Thecode‘if..."startsthedefinitionoftheconditionalstatement.2.1.2:057?>puts"f

  10. ruby - 如何根据特征实现 FactoryGirl 的条件行为 - 2

    我有一个用户工厂。我希望默认情况下确认用户。但是鉴于unconfirmed特征,我不希望它们被确认。虽然我有一个基于实现细节而不是抽象的工作实现,但我想知道如何正确地做到这一点。factory:userdoafter(:create)do|user,evaluator|#unwantedimplementationdetailshereunlessFactoryGirl.factories[:user].defined_traits.map(&:name).include?(:unconfirmed)user.confirm!endendtrait:unconfirmeddoenden

随机推荐