在日常运维中,我们经常需要定时发送邮件报告、监控告警等信息。本文将带你从零开始在CentOS系统上,使用Python邮件发送脚本结合Cron表达式,实现自动化运维中的定时邮件任务。即使你是Linux新手,也能按照步骤轻松完成。
CentOS通常自带Python 2.7,但建议安装Python 3。使用以下命令安装Python 3和pip:
sudo yum install -y python3 python3-pip 安装必要的Python库:smtplib(内置)和email(内置),如果需要简化操作,可以安装yagmail:
pip3 install yagmail 下面是一个使用smtplib发送邮件的示例脚本。我们将脚本保存为/home/user/send_mail.py,并赋予执行权限。
#!/usr/bin/env python3import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport sys# 邮件配置smtp_server = "smtp.example.com"smtp_port = 587sender = "your_email@example.com"password = "your_password"receiver = "receiver@example.com"subject = "定时测试邮件"# 创建邮件msg = MIMEMultipart()msg["From"] = sendermsg["To"] = receivermsg["Subject"] = subjectbody = "这是一封由CentOS定时任务发送的自动化邮件。"msg.attach(MIMEText(body, "plain"))try: server = smtplib.SMTP(smtp_server, smtp_port) server.starttls() server.login(sender, password) text = msg.as_string() server.sendmail(sender, receiver, text) print("邮件发送成功")except Exception as e: print("发送失败:", str(e)) sys.exit(1)finally: server.quit() 请将上述配置中的SMTP服务器、账号密码等信息替换为你自己的。为了安全,建议将密码存储在环境变量或配置文件中,脚本中读取。
在终端运行脚本,确保邮件能正常发送:
python3 /home/user/send_mail.py 如果成功,你会看到“邮件发送成功”的输出,并收到测试邮件。这一步骤验证了Python邮件发送功能的正确性。
CentOS定时任务通过cron服务实现。使用crontab -e命令编辑当前用户的cron表。如果是首次编辑,会提示选择编辑器(建议选vim或nano)。
在文件末尾添加一行,定义Cron表达式和执行命令。例如,每天上午9点执行邮件发送脚本:
0 9 * * * /usr/bin/python3 /home/user/send_mail.py >> /home/user/mail.log 2>&1 解释:0 9 * * *表示每天9:00执行,后面的命令将输出和错误重定向到日志文件方便排查。Cron表达式的格式为“分 时 日 月 周”,你可以根据需要调整。
保存并退出。cron会自动加载新的任务。
可以临时设置一个近期的任务(比如每分钟执行一次)来测试:
* * * * * /usr/bin/python3 /home/user/send_mail.py >> /home/user/mail.log 2>&1 等待一分钟后检查邮件是否收到,并查看日志文件。测试完成后记得删除或注释掉测试行。
systemctl status crond。检查脚本是否有执行权限,以及脚本中使用的路径是否为绝对路径。source /etc/profile。通过以上步骤,你已经掌握了在CentOS上利用自动化运维思想,结合Python和Cron实现定时邮件通知的方法。这种技巧可以应用于服务器监控、定期报表、日志分析等多种场景。
—— 本文关键词:CentOS定时任务、Python邮件发送、Cron表达式、自动化运维 ——
本文由主机测评网于2026-03-02发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20260328086.html