Python 網站監控腳本

Python 網站監控腳本教學:自動檢測網站狀態與 Email/LINE 通知

本教學將帶領新手使用 Python 建立網站監控腳本,能自動檢測網站是否可用、回應速度,並在異常時透過 Email 或 LINE 發送通知。內容包含完整步驟與範例程式碼,從安裝套件、建立檔案、撰寫程式到測試運行,每一步都詳細說明,讓新手也能輕鬆完成自動化監控。關鍵字涵蓋 Python 網站監控、requests、smtplib、LINE Notify。

案例一:Email 通知

此案例示範如何使用 Python 透過 smtplib 發送 Email 通知,當網站異常時自動發送警告。以下步驟針對新手詳細說明每一個操作。


# 步驟 1:建立 Python 檔案
# 建立一個資料夾,例如 monitor_email
# 在資料夾內建立檔案 email_monitor.py

# 步驟 2:安裝所需套件
pip install requests

# 步驟 3:撰寫程式碼
# email_monitor.py
import requests
import smtplib
from email.mime.text import MIMEText

# 設定目標網站
url = "https://www.example.com"

# 定義發送 Email 函式
def send_email(message):
    sender = "your_email@example.com"        # 寄件者 Email
    receiver = "admin@example.com"           # 收件者 Email
    password = "your_email_password"         # Email 密碼或應用程式專用密碼

    # 建立郵件內容
    msg = MIMEText(message)
    msg["Subject"] = "網站監控警告"
    msg["From"] = sender
    msg["To"] = receiver

    # 連線 SMTP 伺服器並發送
    with smtplib.SMTP_SSL("smtp.example.com", 465) as server:
        server.login(sender, password)
        server.sendmail(sender, receiver, msg.as_string())

# 步驟 4:檢測網站並發送通知
try:
    response = requests.get(url, timeout=5)
    if response.status_code != 200:
        send_email(f"{url} 網站異常,狀態碼: {response.status_code}")
except requests.exceptions.RequestException as e:
    send_email(f"{url} 無法連線: {e}")

步驟 5:在終端機執行檔案測試


python email_monitor.py
# 若網站異常,會收到 Email 通知

案例二:定時網站監控

此案例示範如何使用 Python 套件 schedule 定時檢測網站,每隔指定時間自動運行檢查,並在異常時透過 Email 發送通知。


# 步驟 1:建立資料夾 monitor_schedule
# 步驟 2:安裝套件
pip install requests schedule

# 步驟 3:建立檔案 schedule_monitor.py 並撰寫程式
import requests
import schedule
import time
from email.mime.text import MIMEText
import smtplib

url = "https://www.example.com"

def send_email(message):
    sender = "your_email@example.com"
    receiver = "admin@example.com"
    password = "your_email_password"
    msg = MIMEText(message)
    msg["Subject"] = "網站監控警告"
    msg["From"] = sender
    msg["To"] = receiver
    with smtplib.SMTP_SSL("smtp.example.com", 465) as server:
        server.login(sender, password)
        server.sendmail(sender, receiver, msg.as_string())

def monitor():
    try:
        r = requests.get(url, timeout=5)
        if r.status_code != 200:
            send_email(f"{url} 網站異常,狀態碼: {r.status_code}")
    except requests.exceptions.RequestException as e:
        send_email(f"{url} 無法連線: {e}")

# 步驟 4:設定定時任務,每 10 分鐘檢查一次
schedule.every(10).minutes.do(monitor)

# 步驟 5:持續運行
while True:
    schedule.run_pending()
    time.sleep(1)

案例三:LINE Notify 通知

此案例示範如何使用 LINE Notify 發送網站異常通知,步驟包含申請權杖、設定檔案與程式碼。


# 步驟 1:申請 LINE Notify 權杖
# 1. 登入 https://notify-bot.line.me/zh_TW/
# 2. 點選「我的權杖」→「發行權杖」
# 3. 選擇要通知的聊天室,命名後取得權杖 TOKEN

# 步驟 2:建立 Python 檔案 line_monitor.py
import requests

url = "https://www.example.com"
line_token = "YOUR_LINE_NOTIFY_TOKEN"

def send_line_notify(message):
    headers = {
        "Authorization": f"Bearer {line_token}",
        "Content-Type": "application/x-www-form-urlencoded"
    }
    payload = {"message": message}
    r = requests.post("https://notify-api.line.me/api/notify", headers=headers, data=payload)
    return r.status_code

# 步驟 3:檢查網站並通知
try:
    response = requests.get(url, timeout=5)
    if response.status_code != 200:
        send_line_notify(f"{url} 網站異常,狀態碼: {response.status_code}")
except requests.exceptions.RequestException as e:
    send_line_notify(f"{url} 無法連線: {e}")

# 步驟 4:終端機測試
# python line_monitor.py
# 若網站異常,LINE 會收到通知

FAQ 常見問題

Python 網站監控多久執行一次比較合適?

一般建議每 5-15 分鐘檢測一次,依網站重要性與流量調整。使用 schedule 套件或系統 cron 排程可自動運行。若服務敏感,可縮短檢測間隔以快速反應。Microsoft 365、SMTP、DNS 設定正確後可確保通知可靠送達。

監控失敗如何排查?

檢查網路連線、Python 套件版本及網站是否允許 requests 存取。確認 SMTP 帳號、密碼及 DNS 設定正確。可先手動測試發送 Email 或 LINE Notify,確保通知機制正常。

可以同時監控多個網站嗎?

可以建立 URL 清單,使用迴圈逐一檢查並發送通知。確保每個網站的檢測函式呼叫 send_email 或 send_line_notify,並可在 schedule 或 cron 中設定定時任務同時運行。

Python 發送 LINE Notify 需要額外套件嗎?

不需要額外套件,只需 requests 套件即可發送 POST 請求。確保已取得 LINE Notify 權杖並正確放在程式中,測試時可以先單獨呼叫函式確認通知送達。

如果網站同時使用 Email 與 LINE 通知要怎麼做?

可以在同一個監控函式中呼叫 send_email() 與 send_line_notify(),當網站異常時同步發送通知。保持檔案結構清楚,方便後續維護與擴充通知方式。

定時監控程式要如何長期運行?

可使用系統的 cron (Linux/macOS) 或排程工作 (Windows) 執行 Python 檔案。確保環境中 Python 路徑正確,並可將輸出日誌寫入檔案方便檢查,定期確認程式運行正常。

    PAGE TOP