집에 연중무휴 24시간 실행되는 Ubuntu 10.04 데스크탑이 있습니다. 최근에는 컴퓨터가 가끔씩 저절로 다시 시작되는 것을 발견했습니다(대략 한 달에 한 번). 서버가 시작될 때마다 이메일을 받을 수 있도록 이 서버를 설정하고 싶습니다. 내 Gmail 계정에서 이메일을 받고 싶습니다. 서버에서 이메일을 보내는 데 사용할 다른 Gmail 계정을 설정하겠습니다(필요한 경우).
추가 보너스로, 이메일에 서버 충돌 및 재시작 원인과 관련된 일종의 진단 정보가 포함될 수 있다면 좋을 것입니다.
감사해요
답변1
적어도 두 가지 가능한 옵션이 있습니다.
- 새 cronjob 추가(예: @reboot root mail -s "방금 재부팅했습니다."[이메일 보호됨]
- 로그체크를 설치하세요. 재부팅 이유가 포함된 로그 메시지를 보냅니다(관련 로그 항목이 있는 경우).
답변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
이제 시작 및 종료 시 메일을 받게 됩니다(메일링이 올바르게 구성되어 있다고 가정).