我家裡有一個 24/7 運行的 Ubuntu 10.04 桌面。最近,我注意到機器偶爾會自行重新啟動(大約每月一次)。我想設定此伺服器,以便每次伺服器啟動時我都會收到一封電子郵件。我想透過我的 gmail 帳戶取得電子郵件,我將為伺服器設定另一個 gmail 帳戶以用於發送電子郵件(如有必要)。
作為額外的好處,如果電子郵件可以包含某種與導致伺服器崩潰和重新啟動的原因相關的診斷訊息,那就太好了。
謝謝
答案1
我看到至少有兩種可能的選擇:
- 新增一個新的 cronjob(例如@reboot root mail -s“我剛剛重新啟動”[電子郵件受保護]
- 安裝日誌檢查;它會向您發送包含重新啟動原因的日誌訊息(如果有任何關於它們的日誌條目)
答案2
很難追蹤電腦崩潰和重新啟動的原因,但您可以透過通知電子郵件透過電子郵件發送日誌。對於進階監控,我建議嘗試 Zabbix、NagiOS 或 Cacti。不過,這裡有一個簡單的 Python 2.7 腳本,用於使用命令“./script.py username_for_gmail path_to_letter”發送電子郵件:
#!/usr/bin/python2.7
import smtplib
import getopt
import sys
args = getopt.getopt(sys.argv[1:], ":")
laiskas = args[1][1]
SENDER = "no-reply@" + args[1][0]
mssg = open(laiskas, 'r').read()
RECIPIENTS = ['[email protected]']
server = smtplib.SMTP('smtp.gmail.com',587)
#server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.ehlo()
server.login(args[1][0] + "@gmail.com","R7olM6Qw")
server.sendmail(SENDER,RECIPIENTS,mssg)
server.quit()
您必須將 R7olM6Qw 變更為您自己的 GMail 密碼。另外,請更改您的地址的 RECIPIENTS 變數。該腳本需要 smtplib 和 python2.7,這可能需要從 apt 安裝在您的伺服器上。
然後您可以在腳本旁邊建立一個簡單的文字檔案:
To: [email protected]
From: [email protected]
Subject: Computer powered on!
Random text here...
最後,只需在 /etc/rc.local 檔案中新增一行:
/path/to/the/python/script gmail_username /path/to/the/letter
但是,這不是一個安全的方法,因為您將不安全地儲存密碼,因此我建議為此建立一個郵箱。另外,請注意並 chmod 所有腳本,以防止其他使用者對它們進行任何操作。
相反,我認為擁有一個單獨的伺服器,其中 PHP 郵件程式腳本僅適用於伺服器的 IP,這是相當合理的。在這種情況下,單獨的伺服器將安全地執行郵件服務,而其他伺服器僅使用curl或wget來推播通知。
答案3
#!/bin/sh
EMAIL="[email protected]"
SUBJECT="[$HOSTNAME] - System $1"
if [ "$1" = startup ]
then
ACTION="started successfully"
else
ACTION="is shutting down"
fi
# a printf format string to simplify a long body
BODY="This is an automated message to notify you that %s %s.\nDate and Time: %s\n"
printf "$BODY" "$HOSTNAME" "$ACTION" "$(date)" | mail -s "${SUBJECT}" "${EMAIL}"
將其儲存為 /usr/local/bin/bootmail.sh,使其可執行,等等。
然後,要建立 systemd 服務,請在 /etc/systemd/system 中建立一個副檔名為 .service 的檔案(例如 /etc/systemd/system/bootmail.service),其中包含:
[Unit]
Description=Run Scripts at Start and Stop
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/bootmail.sh startup
ExecStop=/usr/local/bin/bootmail.sh shutdown
[Install]
WantedBy=multi-user.target
Now, do:
systemctl daemon-reload
systemctl enable bootmail.service
現在,您應該在啟動和關閉時收到郵件(假設郵件配置正確等)。