url 변경 방지 스 크 립 트 (nagios 플러그 인)

이전 작업 은 nagios 가 쓴 url 에 경고 셸 스 크 립 트 를 변경 해 야 합 니 다.url 페이지 가 바 뀌 면 경고 합 니 다.정상 적 인 수정 을 위해 서 는 hash 파일 을 수 동 으로 다시 생 성하 여 변동 이 빈번 하지 않 고 관건 적 인 url 에 적용 해 야 합 니 다.경험 에 따 르 면 페이지 에 다른 통계 트 래 픽, 표시 시간 등 코드 를 삽입 하면 행 url 수정 모니터링 을 잘 할 수 없습니다.
     기능 핵심 은 경 행 url 비교 입 니 다.curl 다운로드 페이지 를 이용 하여 hash 값 을 계산 하고 다음 비 교 를 위해 저장 합 니 다. 이 부분 사상 은 jokechoo 에서 제공 하고 스 크 립 트 는 tqh 입 니 다.변경 방지 와 달리 여 기 는 실시 간 url 비교, 경고 입 니 다.
    한편, 변경 방지 기술 은 보통 2 조 서버 에서 웹 서 비 스 를 제공 하고 한 조 의 대외 서 비 스 를 제공 합 니 다. 이 서버 는 수정 권한 이 없 으 며 파일 이 수정 되면 다른 배경 서버 에 의 해 동기 화 되 어 변경 방지 가 실 현 됩 니 다.안전 을 위해 서 는 많은 대 가 를 치 러 야 한다.
플러그 인 1. inithash.sh   원본 hash 값 을 계산 하고 저장 합 니 다.(hash 파일 생 성 권한 을 수정 하거나 nagios 사용자 생 성 으로 변경) 플러그 인 2. checkhash  nagios 검색 플러그 인
PS: 플러그 인 에 서 는 중국 어 를 사용 합 니 다. 인 코딩 형식 utf - 8 에 주의 하 십시오. 먼저 중국 어 를 표시 할 지 여 부 를 수 동 으로 디 버 깅 할 수 있 습 니 다.nagios 메 인 프로그램 자체 에 중국어 지원 이 없 으 면 어 지 러 운 코드 로 표 시 될 수 있 습 니 다. 
 코드 는 다음 과 같 습 니 다. 첨부 파일 을 다운로드 할 수 있 습 니 다.
플러그 인 inithash.sh

  
  
  
  
  1. #!/bin/bash 
  2. # version 1.0 beta,2011.01.17 
  3. # used for add/update  webpage hash 
  4. hash_lib=/tmp/test/hashfile 
  5. url_list=/tmp/test/urlfile         # 1  url  
  6. log_file=/tmp/test/updatehash.log 
  7.  
  8. #######@@ # url_list, @@ , 。 check update.list   update 
  9. #if  [ $# -eq 1  -a  -f "$1" ]  
  10. #then 
  11. #   url_list="$1" 
  12. #   echo $url_list   
  13. #else 
  14. #   echo "ERROR: plz input 1 urlfile" 
  15. #   exit 
  16. #fi 
  17. ########@@ 
  18. ### 。 
  19. #[ ! -e $url_list ] && echo "not exist urlfile" && exit 
  20. ###tmp_dir=/tmp/test 
  21. ###web_tmp=/tmp/test/tmpfile 
  22. ###cd $tmp_dir || echo "no tmp_dir,plz create first" && exit  
  23.  
  24. while read LINE 
  25. do 
  26. curl -s  -A topsec $LINE > tmpfileabc   
  27.  #URL /, ,hash URL   
  28. #if [ !  $? -eq 0 ]                     #URL ,  
  29. #then 
  30. #echo "this page cant download" 
  31. #fi 
  32. hashtmp=`sha1sum tmpfileabc`            # HASH 
  33. greptmp=`grep $LINE $hash_lib`          # URL hash 
  34. if [ $? -eq 0  ] 
  35.     then 
  36.         echo "The site $LINE has checked before, update the hash value." 
  37.         sed -i "s#$greptmp#$hashtmp#"  $hash_lib      # # , url #            
  38.             sed -i s#tmpfileabc#"$LINE"#   $hash_lib   # tmpfileabc url 
  39.         echo `date +%Y%m%d_%R` "$LINE hash has updated" >> $log_file  
  40.     else 
  41.         echo "The site $LINE is a new check, add the hash value." 
  42.         echo $hashtmp>> $hash_lib 
  43.         sed -i "s#tmpfileabc#$LINE#"   $hash_lib      
  44.  
  45. fi 
  46. rm -f tmpfileabc 
  47.  
  48. done < $url_list 

 
 2. 플러그 인 2. check_url 

  
  
  
  
  1. #!/bin/bash  
  2. #version 1.0 ,2011.01.18 
  3. #nagios check http plug.  check whether webpage has modified . url list is from file  
  4. #  
  5.  
  6. url_list=/tmp/test/urlfile 
  7. hash_lib=/tmp/test/hashfile 
  8. tmp_dir=/tmp/test 
  9. log_file=/tmp/test/hashcheck.log 
  10. need_update=/tmp/test/needupHASH.list 
  11. cd $tmp_dir  
  12.  
  13.  
  14. flag_a=0 
  15. flag_c=0 
  16.  
  17. while read  URL 
  18. do 
  19.  
  20. curl -s  -A topsec  "$URL" > webtmpfile 
  21. current_hash=`sha1sum webtmpfile | awk '{print$1}'`  
  22.  
  23. #####################check url hash 
  24.  if  `grep  $URL $hash_lib>greptmpfile`     # URL HASH    
  25.  then 
  26.  if    grep -q $current_hash  greptmpfile    # HASH          
  27.             then 
  28.                 flag_a=0                                #  
  29.             else 
  30.                 flag_a=1                                #  
  31.                 echo  `date +%Y%m%d_%R` "$URL web changed" >> $log_file 
  32.                 echo "$URL" >>$need_update                   
  33. # url , l_file  
  34.             fi 
  35. else 
  36.        flag_c=3                           #HASH   
  37.        echo  `date +%Y%m%d_%R` "$URL hash should be create" >>$log_file  
  38.        echo  "$URL" >>$need_update 
  39. fi 
  40.  
  41. done < $url_list  
  42. rm -f greptmpfile 
  43. rm -f webtmpfile 
  44. ######################nagios checkstat  
  45. if [ $flag_c -eq 3 ] 
  46. then 
  47.     if [ $flag_a -eq 1  ] 
  48.     then 
  49.         echo " , URL"   # , URL 
  50.         exit 3 
  51.     else 
  52.         echo " URL"        # , URL 。  /
  53.         exit 1 
  54.     fi 
  55. else  
  56.     if  [ $flag_a -eq 0  ] 
  57.     then 
  58.         echo " "               #  
  59.         exit 0 
  60.     else 
  61.         echo " "           #  
  62.         exit 2 
  63.     fi 
  64.  
  65. fi 

 

좋은 웹페이지 즐겨찾기