/ 2019-01-29
1. 监控Memcached缓存服务是否正常
监控Memcached缓存服务是否正常,模拟用户(web客户端)检测。
使用nc命令加上set/get来模拟检测。
脚本内容:
[root@oldboy scripts]# vim memcache_check.sh #!/bin/bash . /etc/init.d/functions . /etc/init.d/run # 函数 jingdutiao 使用 MemPort=`netstat -lntp |grep -c 0.0.0.0:11211` Set_Key='printf "set oldboy2017 0 10 8\r\noldboy2018\r\n"|nc 10.0.0.180 11211' Get_Key='printf "get oldboy2017\r\n" |nc 10.0.0.180 11211 |grep -c oldboy2018' ReStart='systemctl restart memcached.service' if [ $MemPort -eq 1 ] then $Set_Key $Get_Key if [ $? -ne 1 ] then action "Memcached 运行正常!" /bin/true else action "Memcached 服务异常!" /bin/false fi else action "服务未启动!" /bin/false $ReStart jingdutiao fi
2. 使用(case)编写rsync管理脚本
写网络服务独立进程模式下Rsync的系统启动脚本,例如:/etc/init.d/rsyncd {start|stop|restart}。
要求:
(1)要使用系统函数库技巧。
(2)要用函数,不能一坨
(3)在centos 6中 可被chkconfig管理。
注意:
服务的停止操作和启动操作之间要有间隔时间,使用sleep 1
pkill 进程 sleep 1 start 服务
rsync服务启动脚本
[root@oldboy scripts]# cat rsyncd
#!/bin/bash
. /etc/init.d/functions
. /etc/init.d/run
Rsync_Port=`netstat -lntup |grep -c 0.0.0.0:873`
Rsync_COM1='rsync --daemon'
Rsync_COM2='pkill rsync'
Rsync_Start() {
Rsync_Port1=`netstat -lntup |grep -c 0.0.0.0:873`
if [ $Rsync_Port1 -ne 0 ]
then
action "服务已启动" /bin/false
exit 3
else
$Rsync_COM1
#action "Rsync 启动" /bin/true
QiDong
fi
}
Rsync_Stop() {
Rsync_Port2=`netstat -lntup |grep -c 0.0.0.0:873`
if [ $Rsync_Port2 -eq 0 ]
then
action "服务未启动" /bin/false
exit 3
else
$Rsync_COM2
#action "Rsync 停止" /bin/true
TingZhi
fi
}
Rsync_Status() {
if [ $Rsync_Port -eq 1 ]
then
echo "Rsync 服务运行中..."
else
echo "Rsync 服务未运行"
fi
}
Rsync_Restart() {
Rsync_Stop
Rsync_Start
}
COMMAND=$1
case "$COMMAND" in
start)
Rsync_Start
;;
stop)
Rsync_Stop
;;
status)
Rsync_Status
;;
restart|reload|force-reload)
Rsync_Restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload}"
exit 2
esac3. 菜单自动化软件部署脚本实践
综合实例:打印选择菜单,按照选择一键安装不同的Web服务。
示例菜单:
[root@oldboy scripts]# sh menu.sh 1.[install lamp] 2.[install lnmp] 3.[exit] pls input the num you want:
要求:
(1)当用户输入1时,输出“start installing lamp.提示”然后执行/server/scripts/lamp.sh,脚本内容输出"lampis installed"后退出脚本,工作中就是正式lamp一键安装脚本;
echo 'echo lampis installed' > /server/scripts/lamp.sh chmod +x /server/scripts/lamp.sh
(2)当用户输入2时,输出“start installing lnmp.提示” 然后执行/server/scripts/lnmp.sh输出"lnmpis
installed"后退出脚本,工作中就是正式lnmp一键安装脚本;
echo 'echo lnmpis installed' > /server/scripts/lnmp.sh chmod +x /server/scripts/lnmp.sh
(3)当输入3时,退出当前菜单及脚本;
(4)当输入任何其它字符,给出提示“Input error”后退出脚本;
(5)要对执行的脚本进行相关的条件判断,例如:脚本文件是否存在,是否可执行等判断。
脚本内容
[root@oldboy scripts]# cat menu.sh #!/bin/bash cat <<EOF 1.[install lamp] 2.[install lnmp] 3.[exit] EOF read -p "please input the num you want:" Num case "$Num" in 1) if [ -f /server/scripts/lamp.sh ] then echo -e "\033[36mstart installing lamp\033[0m" /server/scripts/lamp.sh else echo -e "\033[5;41;37m /server/scripts/lamp.sh 文件不存在 \033[0m" fi ;; 2) if [ -f /server/scripts/lnmp.sh ] then echo -e "\033[36mstart installing lnmp\033[0m" /server/scripts/lnmp.sh else echo -e "\033[5;41;37m /server/scripts/lnmp.sh 文件不存在 \033[0m" fi ;; 3) exit ;; *) echo -e "\033[31mInput error \033[0m" exit 2 esac
4. if 与 case 对比
if 语句类似黑名单,需要把这种错误场景封堵
case 语句类似白名单,只要把正确结果列完整即可
(18)