Chinaunix

标题: 帮看一个nagios端口检测函数 [打印本页]

作者: godsad    时间: 2014-07-16 15:33
标题: 帮看一个nagios端口检测函数
本帖最后由 godsad 于 2014-07-16 17:21 编辑

下面这是对check_file_md5做了个小改,主要是为了实现对服务器新增监听端口进行监测,对新增监听端口进程进行反查并记录
  1. function check_file_md5() {
  2.         if [ -f $ARG ]; then
  3.                 if [ `grep $ARG $MD5_LIST | wc -l` -eq 1 ]; then
  4.                         if [ `grep $ARG $MD5_LIST | cut -d\  -f1` = `$MD5 $ARG | cut -d\  -f1` ]; then
  5.                                 echo "OK - $ARG."
  6.                                 exit 0
  7.                         else
  8.                                 echo "CRITICAL - $ARG is modified."
  9. #                               rebuild_md5_list
  10.                         #       echo $ARG > /home/godsad/pso.txt
  11.         #                       if ["$ARG" == "/home/godsad/portScan.log"]; then  #这一加条件就无法执行函数,不知道咋回事
  12.         #                               echo 'ps' > /home/godsad/ps.txt
  13.                                         genlog
  14.         #                       fi
  15.                                 exit 2
  16.                         fi
  17.                 else
  18.                         echo "CRITICAL - $ARG is modified."
  19. #                       echo `$MD5 $ARG` >> $MD5_LIST
  20.                         #echo $ARG > /home/godsad/pso.txt
  21.         #               if ["$ARG" == "/home/godsad/portScan.log"]; then
  22.         #                       echo 'ps' > /home/godsad/ps.txt
  23.                                 genlog
  24.         #               fi
  25.                         exit 2
  26.                 fi
  27.         else
  28.                 echo "CRITICAL - file does not exist!"
  29.                 exit 2
  30.         fi
  31. }
复制代码
下面这是自己的写的新增端口反查函数
  1. function genlog() {
  2.         rm -f /tmp/plist
  3.         rm -f /tmp/dlist
  4.         diff /home/godsad/portScan.log /home/godsad/portScan.log1 | egrep '>|<' | egrep -o '[0-9]+' > /tmp/dlist #生成新增监听端口列表
  5.         for loop in `cat /tmp/dlist`
  6.                 do
  7.                         netstat -lnpu --inet | grep $loop | awk '{print $6}' | egrep -o '[0-9]+' >> /tmp/plist  #生成进程id列表总是空
  8.                         netstat -lnpt --inet | grep $loop | awk '{print $7}' | egrep -o '[0-9]+' >> /tmp/plist
  9.                 done
  10.         cat /tmp/plist | sort | uniq > /tmp/plist1
  11.         for loop in `cat /tmp/plist1`
  12.                 do
  13.                         ls -l /proc/$loop/exe >> /home/godsad/proPath_`date +%Y%m%d_%H:%M`.log
  14.                 done
  15. }
复制代码

作者: Herowinter    时间: 2014-07-16 15:43
回复 1# godsad
  1. if ["$ARG" == "/home/godsad/portScan.log"]

  2. ==>

  3. if [ "$ARG" == "/home/godsad/portScan.log" ]
复制代码
两头都要留空格。。。
   
作者: godsad    时间: 2014-07-16 15:47
Herowinter 发表于 2014-07-16 15:43
回复 1# godsad 两头都要留空格。。。

谢谢.我都给忘了
作者: godsad    时间: 2014-07-16 17:22
genlog函数没什么问题吧?
作者: Shell_HAT    时间: 2014-07-17 15:58
cat /tmp/plist | sort | uniq > /tmp/plist1
可以简化成:
sort -u /tmp/plist > /tmp/plist1
作者: Shell_HAT    时间: 2014-07-17 15:59
ls -l /proc/$loop/exe >> /home/godsad/proPath_`date +%Y%m%d_%H:%M`.log
建议不要在文件名里面使用冒号,因为你不知道哪一天这个文件会被复制到Windows里面。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2