/ 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 esac
3. 菜单自动化软件部署脚本实践
综合实例:打印选择菜单,按照选择一键安装不同的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)