셸 모니터링 사이트 이상 스 크 립 트

2783 단어
우리 선생님 대 신의 인공지능 튜 토리 얼 을 나 눠 보 세 요.제로 베이스!통속 적 이 고 알 기 쉽다!유머노 란 멘 트 도 달 고!당신 도 우리 인공지능 팀 에 합류 하 기 를 바 랍 니 다!https://blog.csdn.net/jiangjunshow
               
셸 은 사이트 의 이상 여 부 를 감시 하 는 스 크 립 트 입 니 다. 이상 이 있 으 면 자동 으로 관리자 에 게 이메일 을 보 냅 니 다.
흐름: 1. 사이트 에서 돌아 오 는 http 검사코드 가 200 인지, 200 이 아니면 이상 입 니 다.2. 사이트 의 방문 시간 을 확인 하고 MAXLOADTIME (10 초) 을 초과 하면 이상 으로 간주 합 니 다.3. 알림 이메일 발송 후/tmp/monitorload. reark 는 발송 시간 을 기록 하고 한 시간 동안 중복 발송 하지 않 습 니 다. 예 를 들 어 한 시간 후에/tmp/monitor 를 비 웁 니 다.load.remark.
#!/bin/bashSITES=("http://web01.example.com" "http://web02.example.com") # 要监控的网站NOTICE_EMAIL='[email protected]'                                 # 管理员电邮MAXLOADTIME=10                                                # 访问超时时间设置REMARKFILE='/tmp/monitor_load.remark'                         # 记录时否发送过通知电邮,如发送过则一小时内不再发送ISSEND=0                                                      # 是否有发送电邮EXPIRE=3600                                                   # 每次发送电邮的间隔秒数NOW=$(date +%s)if [ -f "$REMARKFILE" ] && [ -s "$REMARKFILE" ]; then    REMARK=$(cat $REMARKFILE)        # 删除过期的电邮发送时间记录文件    if [ $(( $NOW - $REMARK )) -gt "$EXPIRE" ]; then        rm -f ${REMARKFILE}        REMARK=""    fielse    REMARK=""fi# 循环判断每个sitefor site in ${SITES[*]}; do    printf "start to load ${site}
"    site_load_time=$(curl -o /dev/null -s -w "time_connect: %{time_connect}
time_starttransfer: %{time_starttransfer}
time_total: %{time_total}" "${site}")    site_access=$(curl -o /dev/null -s -w %{http_code} "${site}")    time_total=${site_load_time##*:}    printf "$(date '+%Y-%m-%d %H:%M:%S')
"    printf "site load time
${site_load_time}
"    printf "site access:${site_access}

"    # not send    if [ "$REMARK" = "" ]; then        # check access        if [ "$time_total" = "0.000" ] || [ "$site_access" != "200" ]; then            echo "Subject: ${site} can access $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}            ISSEND=1        else            # check load time            if [ "${time_total%%.*}" -ge ${MAXLOADTIME} ]; then                echo "Subject: ${site} load time total:${time_total} $(date +%Y-%m-%d' '%H:%M:%S)" | sendmail ${NOTICE_EMAIL}                ISSEND=1            fi        fi    fidone# 发送电邮后记录发送时间if [ "$ISSEND" = "1" ]; then    echo "$(date +%s)" > $REMARKFILEfiexit 0

           
우리 선생님 대 신의 인공지능 튜 토리 얼 을 나 눠 보 세 요.제로 베이스!통속 적 이 고 알 기 쉽다!유머노 란 멘 트 도 달 고!당신 도 우리 인공지능 팀 에 합류 하 기 를 바 랍 니 다!https://blog.csdn.net/jiangjunshow

좋은 웹페이지 즐겨찾기