1. 程式人生 > >036_監控 HTTP 服務器的狀態(測試返回碼)

036_監控 HTTP 服務器的狀態(測試返回碼)

排查 pid index 時間 不顯示 warn 報警郵件 curl ech

#!/bin/bash

#設置變量,url 為你需要檢測的目標網站的網址(IP 或域名)
url=http://192.168.4.5/index.html

#定義函數 check_http:
#使用 curl 命令檢查 http 服務器的狀態
#-m 設置 curl 不管訪問成功或失敗,最大消耗的時間為 5 秒,5 秒連接服務為相應則視為無法連接
#-s 設置靜默連接,不顯示連接時的連接速度、時間消耗等信息
#-o 將 curl 下載的頁面內容導出到/dev/null(默認會在屏幕顯示頁面內容)
#-w 設置 curl 命令需要顯示的內容%{http_code},指定 curl 返回服務器的狀態碼

check_http(){

status_code=$(curl -m 5 -s -o /dev/null -w %{http_code} $url)
}

while :
do
check_http
if [ $status_code -ne 200 ];then
date=$(date +%Y%m%d-%H:%M:%S)
#生成報警郵件的內容
echo "當前時間為:$date $url 服務器異常,狀態碼為${status_code}.請盡快排查異常." > /tmp/http$$.pid
#指定測試服務器狀態的函數,並根據返回碼決定是發送郵件報警還是將正常信息寫入日誌

mail -s Warning root < /tmp/http$$.pid
else
echo "$url 連接正常" >> /var/log/http.log
fi
sleep 5
done

036_監控 HTTP 服務器的狀態(測試返回碼)