Linux服务器断电启动后自动发送邮件

1.编写python脚本shutdown_msg.py

本人的shutdown_msg.py文件放置在目录/home/zml/etc/shutdown_msg.py下,此文件可放置于任意目录

# -*- coding: utf-8 -*-
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr, parseaddr
import datetime


def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, "utf-8").encode(), addr))


def mail(
        sender="zmlyzml@qq.com",
        password="", # 改为自己的密码
        recipients=("zmlmail2021@163.com", ),  # 可设置多个收件人
        smtp_server="smtp.qq.com",  #
        port=465,
        subject="Tsgzcpu001服务器已启动"
):
    msg = MIMEMultipart()
    msg["From"] = _format_addr("服务器管理员 <%s>" % sender)
    msg["To"] = _format_addr("管理员 <%s>" % ", ".join(list(recipients)))
    msg["Subject"] = Header(subject, "utf-8").encode()
    now_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    text = f"您主机名为Tsgzcpu001的CPU服务器由于不明原因关机了,于{now_time}成功重新启动,请前往控制台重新运行程序!"
    msg.attach(MIMEText(text, "plain", "utf-8"))
    server = smtplib.SMTP_SSL(smtp_server, port)
    try:
        server.login(sender, password)
        server.sendmail(sender, list(recipients), msg.as_string())
        logs = f"{sender}{'; '.join(recipients)} 的邮件发送成功"
    except smtplib.SMTPException:
        logs = "Error: 无法发送邮件"
    finally:
        server.quit()
    return logs

# ubuntu设置关机时自动执行任务


if __name__ == '__main__':
    logs = mail()

2.自定义服务

/etc/systemd/system/创建脚本文件mailshutdown.service,可用命令:

vim /etc/systemd/system/mailshutdown.service

脚本文件的内容如下:

[Unit]
Description=Run command at boot up
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
ExecStartPre=/bin/sleep 10  # 设置10秒的延迟启动,避免因网络未准备好导致邮件发送失败
ExecStart=/usr/bin/python3 /home/zml/etc/shutdown_msg.py
# ExecStart需改为自己python的执行路径,可用which python 命令确定
# /home/zml/etc/shutdown_msg.py 需改为自己脚本的路径

[Install]
WantedBy=multi-user.target

3.加入开机启动

sudo systemctl daemon-reload
sudo systemctl start mailshutdown.service
sudo systemctl enable mailshutdown.service

4.测试与查看

重启系统:

sudo reboot

若发送识别,可查看日志,查明原因:

sudo systemctl status mailshutdown.service
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值