셸 모니터링 사이트 이상 스 크 립 트
셸 은 사이트 의 이상 여 부 를 감시 하 는 스 크 립 트 입 니 다. 이상 이 있 으 면 자동 으로 관리자 에 게 이메일 을 보 냅 니 다.
흐름: 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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.