zoukankan      html  css  js  c++  java
  • 高级脚本进阶—使用case的多功能选择性脚本

    应用场景:

      在应用脚本决解实际的运维问题时,单功能脚本有很多的不同应用环境,如不同的运行环境,不同的系统版本等,这时,就需要对脚本的功能进行选择,一个脚本实现多功能多版本系统的维护,以减少沟通成本,而减少工作与沟通的复杂度是实际的工作中很有必要的,介绍一个简单的实现小框架,使用case流分离工具进行功能分离:

    #!/bin/bash
    Title
    = oneSubtitle= twoSubtitle= threeSubtitle= fourSubtitle= fiveSubtitle= sixSubtitle= sevenSubtitle= echo cat <<EOF DATE : `date +%Y-%m-%d-%T` ========================================== $Title ========================================== **  1)$oneSubtitle ** ** 2)$twoSubtitle ** **  3)$threeSubtitle ** ** 4)$fourSubtitle ** ** 5)$fiveSubtitle ** ** 6)$sixSubtitle ** ** 7)$sevenSubtitle ** ========================================== EOF read -p "Please choose [1-7]:" num case $num in 1) function1 ;; 2) function2 ;; 3) function3 ;; 4) function4 ;; 5) function5 ;; 6) function6 ;; 7) function7 ;; *) clear ./$0 ;; esac
    #!/bin/bash
    . /etc/rc.d/init.d/functions
    
    start(){
        rsync --daemon
        if [ $? -eq 0 -a `ps -ef|grep -v grep|grep rsync|wc -l` -gt 0 ];then 
            action "Starting Rsync:" /bin/true
            sleep 1
        else
            action "Starting Rsync:" /bin/false
        sleep 1 
        fi
    }
    
    stop(){
        pkill rsync;sleep 1;pkill rsync
        if [ `ps -ef|grep -v grep|grep "rsync --daemon"|wc -l` -lt 1 ];then
            action "Stopping Rsync: " /bin/true
            sleep 1
        else
            action "Stopping Rsync:" /bin/true
            sleep 1
        fi
    }
    
    case "$1" in
        start)
            start;
            ;; 
        stop)
            stop;
            ;;
         restart|reload)
              stop;
            start;
            ;; 
        *)
            echo $"Usage: $0 {start|stop|restart|reload}"
             ;;
    esac

    如上所示,小框架进行了七种不同场景的分离。

    小结:

     而在实际的应用脚本时,需要注意的有以下几点:

    1.功能与功能之间的交叉。

    2.根据实际的情况,选择不同的方式来进行。

    3.考虑应用场景时,要考虑各种系统环境,提升代码的健壮性。

    4.对相应命令的执行结果,不要一味的输入到/dev/null下,这样会错失很多的信息。

    5.多测试,以实现功能的完备。

  • 相关阅读:
    Ubuntu 12.04 安装scribe 的笔记 | 动漫驿站
    boost install on prinse 12.04 ubuntu
    basic coder » linux下获取当前程序的绝对路径
    spring 使用 groovy 的 utf8 问题
    string转化大小写(C++) | Vimer的程序世界
    linux常用命令一
    STL map与Boost unordered_map 有何不可的日志 网易博客
    本博使用的vim(gvim)相关插件整理
    【转】C++11中值得关注的几大变化 奔向C++ C++博客
    Lua 语言和C/C++集成调研小结
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11409966.html
Copyright © 2011-2022 走看看