Ubuntu 10.04 - 컴퓨터가 시작될 때 이메일 보내기

Ubuntu 10.04 - 컴퓨터가 시작될 때 이메일 보내기

집에 연중무휴 24시간 실행되는 Ubuntu 10.04 데스크탑이 있습니다. 최근에는 컴퓨터가 가끔씩 저절로 다시 시작되는 것을 발견했습니다(대략 한 달에 한 번). 서버가 시작될 때마다 이메일을 받을 수 있도록 이 서버를 설정하고 싶습니다. 내 Gmail 계정에서 이메일을 받고 싶습니다. 서버에서 이메일을 보내는 데 사용할 다른 Gmail 계정을 설정하겠습니다(필요한 경우).

추가 보너스로, 이메일에 서버 충돌 및 재시작 원인과 관련된 일종의 진단 정보가 포함될 수 있다면 좋을 것입니다.

감사해요

답변1

적어도 두 가지 가능한 옵션이 있습니다.

  1. 새 cronjob 추가(예: @reboot root mail -s "방금 재부팅했습니다."[이메일 보호됨]
  2. 로그체크를 설치하세요. 재부팅 이유가 포함된 로그 메시지를 보냅니다(관련 로그 항목이 있는 경우).

답변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 메일러 스크립트를 갖춘 별도의 서버를 두는 것이 오히려 합리적이라고 생각합니다. 이 경우 별도의 서버는 메일링 서비스를 안전하게 수행하고 다른 서버는 알림 푸시를 위해 컬 또는 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 서비스를 생성하려면 다음을 포함하는 .service 확장명(예: /etc/systemd/system/bootmail.service)을 사용하여 /etc/systemd/system에 파일을 생성합니다.

[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

이제 시작 및 종료 시 메일을 받게 됩니다(메일링이 올바르게 구성되어 있다고 가정).

관련 정보