高级脚本进阶—使用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.多测试,以实现功能的完备。

posted @ 2019-08-25 23:26  小雨淅淅o0  阅读(347)  评论(0编辑  收藏  举报