自宅に Ubuntu 10.04 デスクトップがあり、24 時間 365 日稼働しています。最近、マシンがときどき勝手に再起動することに気づきました (月に 1 回程度)。サーバーが起動するたびにメールが届くようにサーバーを設定したいと思います。メールは Gmail アカウントで受信し、サーバーがメールを送信するために使用する別の Gmail アカウントを設定します (必要な場合)。
追加のボーナスとして、サーバーがクラッシュして再起動した原因に関する何らかの診断情報が電子メールに含まれていれば素晴らしいと思います。
ありがとう
答え1
少なくとも 2 つの選択肢が考えられます。
- 新しい cronjob を追加します (例: @reboot root mail -s "再起動しました"[メールアドレス]
- logcheck をインストールすると、再起動の理由を含むログ メッセージが送信されます (それに関するログ エントリがある場合)
答え2
コンピュータがクラッシュして再起動した理由を追跡するのは困難ですが、通知メールを使用してログを電子メールで送信できます。高度な監視には、Zabbix、NagiOS、または Cacti を試してみることをお勧めします。ただし、コマンド「./script.py username_for_gmail path_to_letter」を使用して電子メールを送信する簡単な Python 2.7 スクリプトを以下に示します。
#!/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 で変更することを忘れないでください。
代わりに、サーバーの IP に対してのみ PHP メーラー スクリプトが使用できる別のサーバーを用意する方が合理的だと思います。その場合、別のサーバーがメール サービスを安全に実行し、他のサーバーでは通知をプッシュするために 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
これで、起動時とシャットダウン時にメールが届くようになります (メールが正しく設定されているなど)。