监控服务器连通性的shell脚本
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-04-28
下面这个脚本是用来监控全国各个机房哪些服务器无法与其相应的日志备份服务器相联通.假设每个机房有300台应用服务器,对应一台大容量的日志备份服务器. 这是我最近根据需要写的一个监控脚本,大家可以不必知道这个脚步的具体功能,只需要掌握其中的一些技巧就可以了. #!/bin/bash #Finding out the IP which logserver cannot connected from the ip list(locates:/home/list) in logserver. #Written on xxxx. #Author:Levin. trap ''echo;exit 0'' 2 15 IP=`cat /home/admin/IP.logserver` list=/home/list for i in $IP do ip=`echo $i|awk -F''--->'' ''{print $2}''` echo $i ssh $ip "cd /home/admin/ cat > testconnect.sh <<''EOF'' #!/bin/bash trap ''echo;exit 0'' 2 15 ip=`awk ''{print $2}'' /home/admin/list` for i in $ip do echo -n "$i " /usr/bin/ssh $i "echo connection ok!" done &>/home/admin/conn.txt grep -v "connection ok!" /home/admin/conn.txt| tee /home/admin/conn.xg EOF su - admin -c "/bin/bash /home/admin/testconnect.sh &>/dev/null" su - admin -c "[ -s /home/admin/conn.xg ]&& cat /home/admin/conn.xg" " done &>/home/admin/email.conn num=`cat /home/admin/email.conn|wc -l` if [[ $num -gt 9 ]] then mail -s "提醒:logserver /home/list 发现问题IP " xxx@xxx.com </home/admin/email.conn fi exit 0 几个有用的技巧: 1,ssh ip "" 远程执行命令的用法,把要在远程执行的命令用双引号引上,不要用单引号或不使用引号.使用单引号无法调用本地的变量,在使用awk的时候也会有问题.“”中的都是要在远程服务器执行的命令,可以用;号隔开每条命令,但最好使用回车符分开,这样看上去很清晰. 2,cat > testconnect.sh <<''EOF'' ... EOF Here Document用法,简单说明一下,testconnect.sh为要创建的文件,中间的...为要写入这个文件的内容,EOF的单引号或双引号,为注释掉内容的变量.这种用法非常实用,值得好好去钻研钻研. 3,su - admin -c “” 切换到普通用户执行命令,“”号中是要在普通用户环境下执行的命令.脚本中的“”被转义了,是这是在远程执行的,为了不与ssh的“”相冲突而出现错误. |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: linux下单独配置subversion方法下一篇: Linux常用命令大总结
关于监控服务器连通性的shell脚本的所有评论