快速业务通道

监控服务器连通性的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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号