系统检测脚本

来源:互联网 发布:php如何验证激活帐号 编辑:程序博客网 时间:2024/05/02 02:01
#!/bin/sh


PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin


######################################################
#                                                    #
#  www.livedoor.cn Server Status Info Report v1.0    #
#     This script compile by Liu Hongguang           #
#                   liuhg@livedoor.cn  2004/11/18    #
#                                                    #
######################################################


SUBJECT='Bak Server system warning!!'
FROMMAIL=system@beihai365.com
TOMAIL='iceblood@163.com,237852571@qq.com'
TIME=`date '+%Y年%m月%d日 %H:%M:%S'`
TMPFILE=/tmp/.warning.txt
GW=10.4.3.10




rm -f $TMPFILE


echo "Subject:$SUBJECT" >> $TMPFILE
echo "From:$FROMMAIL" >> $TMPFILE
echo "To:$TOMAIL" >> $TMPFILE
echo "Content-Type:text/plain;charset=gb2312" >> $TMPFILE
echo >> $TMPFILE
echo "#" >> $TMPFILE
echo "# 时间:$TIME" >> $TMPFILE
echo "#" >> $TMPFILE
echo >> $TMPFILE
WARNING=0


chkdisk()
{
echo '#' >> $TMPFILE
echo '# 系统空间告警' >> $TMPFILE
echo '#' >> $TMPFILE
WARINFO=`df -k |grep -v procfs |grep -v devfs | awk 'NR>1&&int($5)>99'`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo "警告!!以下分区空间超过99%!!!!" >> $TMPFILE
df -k |grep -v procfs |grep -v devfs | awk 'NR>1&&int($5)>99' >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


netstate()
{
echo '#' >> $TMPFILE
echo '# 到10.0.143.112的网络状态告警' >> $TMPFILE
echo '#' >> $TMPFILE
ping -t 4 10.0.143.112
if [ "$?" != "0" ]; then
WARNING=1
echo '警告!!!到10.0.143.112的ICMP包丢失!!' >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE

# echo '#' >> $TMPFILE
# echo '# 到10.2.0.178的网络状态告警' >> $TMPFILE
# echo '#' >> $TMPFILE
# ping -t 4 10.2.0.178
# if [ "$?" != "0" ]; then
# WARNING=1
# echo '警告!!!到10.2.0.178的ICMP包丢失!!' >> $TMPFILE
# else
# echo "正常!" >> $TMPFILE
# fi
# echo >> $TMPFILE

echo '#' >> $TMPFILE
echo '# 到10.0.172.212的网络状态告警' >> $TMPFILE
echo '#' >> $TMPFILE
ping -t 4 10.0.172.212
if [ "$?" != "0" ]; then
echo '警告!!!到10.0.172.212的ICMP包丢失!!' >> $TMPFILE
WARNING=1
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


netspeed()
{
echo '#' >> $TMPFILE
echo '# 到fx.livedoor.com的网络速度告警' >> $TMPFILE
echo '#' >> $TMPFILE
WARINFO=`ping -t 4 fx.livedoor.com | grep icmp_seq | awk -F= 'NR>1&&int($4)>600'`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!到fx.livedoor.com的ICMP包超过600毫秒!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
echo '#' >> $TMPFILE
echo '# 到fx.livedoor.com的网络状态告警' >> $TMPFILE
echo '#' >> $TMPFILE
ping -t 4 fx.livedoor.com
if [ "$?" != "0" ]; then
WARNING=1
echo '警告!!!到fx.livedoor.com的ICMP包没有返回信息!!' >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE

echo '#' >> $TMPFILE
echo '# 到218.204.53.1的网络速度告警' >> $TMPFILE
echo '#' >> $TMPFILE
WARINFO=`ping -t 4 218.204.53.1 | grep icmp_seq | awk -F= 'NR>1&&int($4)>600'`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!到218.204.53.1的ICMP包超过600毫秒!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
echo '#' >> $TMPFILE
echo '# 到218.204.53.1的网络状态告警' >> $TMPFILE
echo '#' >> $TMPFILE
ping -t 4 218.204.53.1
if [ "$?" != "0" ]; then
WARNING=1
echo '警告!!!到218.204.53.1的ICMP包没有返回信息!!' >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


ipfwrule()
{
echo '#' >> $TMPFILE
echo '# IP Firewall防火墙规则告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/ipfw.rules
ipfw list >/tmp/.ipfw.rules
WARINFO=`diff /tmp/.ipfw.rules /var/backups/ipfw.rules`
rm -f /tmp/.ipfw.rules
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!IP Firewall防火墙规则产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
ipfw list > /var/backups/ipfw.rules
chmod 600 /var/backups/ipfw.rules
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


natdrule()
{
echo '#' >> $TMPFILE
echo '# NATD规则告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/natd.rules
cat /etc/natd.conf > /tmp/.natd.rules
WARINFO=`diff /tmp/.natd.rules /var/backups/natd.rules`
rm -f /tmp/.natd.rules
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!NATD规则产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
cat /etc/natd.conf > /var/backups/natd.rules
chmod 600 /var/backups/natd.rules
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


ipfrule()
{
echo '#' >> $TMPFILE
echo '# IP Filter防火墙规则告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/ipf.rules
ipfstat -ion > /tmp/.ipf.rules
WARINFO=`diff /tmp/.ipf.rules /var/backups/ipf.rules`
rm -f /tmp/.ipf.rules
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!IP Filter防火墙规则产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
ipfstat -ion > /var/backups/ipf.rules
chmod 600 /var/backups/ipf.rules
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


ipnatrule()
{
echo '#' >> $TMPFILE
echo '# IP NAT规则告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/ipnat.rules
ipnat -l | grep map |grep -v grep > /tmp/.ipnat.rules
ipnat -l | grep rdr |grep -v grep >> /tmp/.ipnat.rules
WARINFO=`diff /tmp/.ipnat.rules /var/backups/ipnat.rules`
rm -f /tmp/.ipnat.rules
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!IP NAT 规则产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
ipnat -l | grep map |grep -v grep > /var/backups/ipnat.rules
ipnat -l | grep rdr |grep -v grep >> /var/backups/ipnat.rules
chmod 600 /var/backups/ipnat.rules
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


userchg()
{
echo '#' >> $TMPFILE
echo '# 用户信息告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/master.passwd.bak
WARINFO=`diff /etc/master.passwd /var/backups/master.passwd.bak`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!用户信息产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
cp /etc/master.passwd /var/backups/master.passwd.bak
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


groupchg()
{
echo '#' >> $TMPFILE
echo '# 用户组信息告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/group.passwd.bak
WARINFO=`diff /etc/group /var/backups/group.passwd.bak`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!用户组信息产生变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
cp /etc/group /var/backups/group.passwd.bak
else
echo "正常!" >> $TMPFILE
fi
echo >> $TMPFILE
}


chkroute()
{
echo '#' >> $TMPFILE
echo '# 路由表信息告警' >> $TMPFILE
echo '#' >> $TMPFILE
touch /var/backups/route.bak
netstat -rn | grep default |grep -v grep | awk '{print $1" "$2}' > /tmp/.route.bak
netstat -rn | grep "$GW" |grep -v grep | awk '{print $1" "$2}' >> /tmp/.route.bak
WARINFO=`diff /tmp/.route.bak /var/backups/route.bak`
if [ "$WARINFO" != "" ]; then
WARNING=1
echo '警告!!!路由信息产生了变化!!!' >> $TMPFILE
echo $WARINFO >> $TMPFILE
cp /tmp/.route.bak /var/backups/route.bak
else
echo "正常!" >> $TMPFILE
fi
rm -f /tmp/.route.bak
echo >> $TMPFILE
}


mailqueue()
{
echo '#' >> $TMPFILE
echo '# 邮件队列检查' >> $TMPFILE
echo '#' >> $TMPFILE
qmail-remove -i 2> /tmp/.mailqueue > /dev/null
QUEUE=`cat /tmp/.mailqueue | awk '{print $1}'`
if [ "$QUEUE" -ge "500" ]; then
WARNING=1
echo '警告!!!邮件队列过长!!!' >> $TMPFILE
echo "邮件队列达到 $QUEUE 封!!!" >> $TMPFILE
else
echo "正常!" >> $TMPFILE
fi
rm -f /tmp/.mailqueue
echo >> $TMPFILE
}
################################################
#硬盘空间检查
chkdisk;
#网络状态
#netstate;
#网络速度
#netspeed;
#ipfw防火墙规则对比
#ipfwrule;
#NATD规则对比
#natdrule;
#ipf防火墙规则对比
#ipfrule;
#ipnat规则对比
#ipnatrule;
#用户/组信息对比
userchg;
groupchg;
#检查路由表
chkroute;
#检查邮件队列
#mailqueue;




#发送电子邮件报告
if [ "$WARNING" = "1" ]; then
sendmail -t < $TMPFILE
fi


exit