Chinaunix首页 | 论坛 | 博客
  • 博客访问: 66179
  • 博文数量: 21
  • 博客积分: 100
  • 博客等级: 民兵
  • 技术积分: 273
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-30 09:56
文章分类

全部博文(21)

文章存档

2013年(18)

2012年(3)

我的朋友

分类: LINUX

2013-08-09 10:57:58


点击(此处)折叠或打开

  1. #####ReadMe####



  2. 此脚本用于检查服务器是否开始,请确保能PING通

  3. # 配置每一个小时检查一次

  4. #crontab -e
  5. Enter:

  6. 01 * * * * /home/caijiangfeng/monitor.sh

  7. # 配置支持中文
  8. # vim /etc/sysconfig/i18n
  9. Enter:

  10. LANG="zh_CN.GB18030"
  11. LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
  12. SUPPORTED="en_US.UTF-8:en_US:en:zh_CN.UTF-8:zh_CN:zh:fr_FR.UTF-8:fr_FR:fr:de_DE.
  13. UTF-8:de_DE:de:ja_JP.UTF-8:ja_JP:ja:es_ES.UTF-8:es_ES:es"
  14. SYSFONT="lat0-sun16"

  15. # 配置MAIL客服端

  16. # yum install mutt -y
  17. #cp ./muttrc /root/.muttrc
  18. 默认发送邮件地址为:root@server.com
  19. 用户名:system
  20. 如需要请更改muttrc文件


  21. # 安装nmap工具

  22. #yum install namp -y





  23. # 配置文件说明
  24. 1.host
  25. format: ip 主机说明 检查服务器类型(如:ftp21,http80,mail25)
  26. 目前不支持同一主机多个服务,如需要请添加多行此主机。

点击(此处)折叠或打开

  1. #!/bin/bash
  2. ##############################
  3. # The:    Feng
  4. # Date:    2013-1-23
  5. # From:    
  6. # 1.chk ping    2013-1-24
  7. # 2.chk servers.    2013-1-25
  8. #
  9. ##############################
  10. chkgateway ()
  11. {
  12. {
  13. echo "######`date`######"
  14. ping -c 2 $IP
  15. if [ $? -ne 0 ];then
  16.     echo "`date`无法连接网关:$IP,终止!!!"
  17.     exit 1
  18. fi
  19. } | tee >> $log
  20. }

  21. chkping ()
  22. {
  23. >$pingf
  24. {
  25. a=1
  26. for i in `awk '{print $1}' $hostfile`;do
  27.     echo "######`date`######"
  28.     echo "开始检查ping!"
  29.     ping -c 2 $i
  30.     if [ $? -ne 0 ];then
  31.         echo ''    >> $pingf
  32.         echo `date`    >> $pingf
  33.         echo ''    >> $pingf
  34.         echo ''    >> $pingf
  35.         echo '警告:请检查以下设备!!!'    >> $pingf
  36.         echo "`sed -n "$a"p $hostfile`" >> $pingf
  37.     fi
  38.     ((a++))
  39. done
  40. } | tee >> $log
  41. }

  42. chkservice ()
  43. {
  44. >$servicef
  45. >$host_service
  46. {
  47. sed = $hostfile|sed 'N;s/\n/\t/'|sed -n /\\s.*\\s.*\\s.*/p > $host_service
  48. test_sfile=`sed -n '$=' $host_service`
  49. if [ -z $test_sfile ];then
  50.     echo "######`date`######"
  51.     echo "没有要检查的服务器"
  52.     return 0
  53. else
  54.     echo "######`date`######"
  55.     echo "开始检查服务!!."
  56. fi
  57. a=1
  58. b=1
  59. for i in `awk '{print $2}' $host_service`;do
  60.     echo "######`date`######"
  61.     service=`sed -n "$a"p $host_service|awk '{print $4}'`
  62.     echo $service
  63.     case "$service" in
  64.         ftp21)    servicep=$ftpport
  65.             ;;
  66.         mail110) servicep=$mailport
  67.             ;;
  68.         dns25)    servicep=$dnsport
  69.             ;;
  70.         http80)    servicep=$httpport_a
  71.             ;;
  72.         http8080)    servicep=$httpport_a
  73.             ;;
  74.         rd3389)    servicep=$RDport
  75.             ;;        
  76.         *)    echo '未知端口...'
  77.             return 0
  78.             ;;
  79.     esac
  80.     echo "######jianchan $i $service######"
  81.     nmap $i -p $servicep|grep open >/dev/null
  82.     if [ $? -ne 0 ];then
  83.         if [ $b -eq 1 ];then
  84.             echo "IP:$i $service 服务没有开启!"
  85.             echo '' >> $servicef
  86.             echo "`date`" >> $servicef
  87.             echo '' >> $servicef
  88.             echo '' >> $servicef
  89.             echo '请检查以下服务器' >> $servicef
  90.             ((b++))
  91.         fi
  92.         id=`sed -n "$a"p $host_service|awk '{print $1}'`
  93.         echo $id
  94.         echo "`sed -n "$id"p $hostfile`" >> $servicef
  95.     else
  96.         echo "IP:$i $service 开启"
  97.     fi
  98.     ((a++))
  99. done
  100. } | tee >> $log
  101. rm -fr $host_service
  102. }

  103. feng ()
  104. {
  105. case $1 in
  106.     ping)        f=$pingf
  107.             ;;
  108.     service)    f=$servicef
  109.             ;;
  110. esac

  111. echo '' >> $f
  112. echo '' >> $f
  113. echo '' >> $f
  114. echo '' >> $f
  115. echo '' >> $f
  116. echo '' >> $f
  117. echo "`date +%Y-%m-%d`" >> $f
  118. echo 'Feng' >> $f

  119. }

  120. sedmail ()
  121. {
  122. {
  123. case $1 in
  124.     ping)    ss=`sed -n '$=' $pingf`;
  125.          if [ ! -z $ss ];then
  126.             echo '宕机发送邮件'
  127.             feng ping
  128.             mutt $mailname -s "`date +%Y-%m-%d_%H:%M:%S` 《警告:设备宕机》" < $pingf
  129.         fi
  130.         ;;
  131.     service) ss=`sed -n '$=' $servicef`
  132.         if [ ! -z $ss ];then
  133.             echo '服务未启动'
  134.             feng service
  135.             mutt $mailname -s "`date +%Y-%m-%d_%H:%M:%S` 《警告:服务没有开启》" < $servicef
  136.         fi
  137.         ;;
  138. esac
  139. } | tee >> $log
  140. }



  141. # OK Let's begen
  142. # 脚本家目录
  143. path=/home/caijiangfeng
  144. # 监控邮箱
  145. mailname=netadmin@baustem.com
  146. # 检查主机配置文件
  147. hostfile=$path/host
  148. # 检查服务临时配置文件
  149. host_service=$path/host_service
  150. # 日志文件
  151. log=$path/log.txt
  152. # 警告内容目录
  153. inputdir=$path/input
  154. # ping警告内容
  155. pingf=$inputdir/pingfile
  156. # 服务警告内容
  157. servicef=$inputdir/servicesfile
  158. # 监控邮件端口
  159. mailport=110
  160. # 监控FTP端口
  161. ftpport=21
  162. # 监控DNS端口
  163. dnsport=25
  164. # 监控WEB端口1
  165. httpport_a=80
  166. # 监控WEB端口2
  167. httpport_b=8080
  168. # 监控远程桌面端口
  169. RDport=3389
  170. # 计算监控主机数量
  171. s=`sed -n '$=' $hostfile`
  172. # 公共IP用于检查主机是否连网
  173. IP=210.77.77.7

  174. [ -d $inputdir ] || mkdir $inputdir;
  175. # 检查是否连网
  176. chkgateway
  177. # 检查ping
  178. chkping
  179. # 检查服务
  180. chkservice
  181. # 检查并发送ping警告
  182. sedmail ping
  183. # 检查并发送未开启服务警告
  184. sedmail service

  185. # End.


阅读(699) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~