应用场景:
在应用脚本决解实际的运维问题时,单功能脚本有很多的不同应用环境,如不同的运行环境,不同的系统版本等,这时,就需要对脚本的功能进行选择,一个脚本实现多功能多版本系统的维护,以减少沟通成本,而减少工作与沟通的复杂度是实际的工作中很有必要的,介绍一个简单的实现小框架,使用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.多测试,以实现功能的完备。