基于Python脚本实现邮件报警功能
作者:Mr_Wmn 发布时间:2023-02-04 17:16:41
标签:Python,脚本,邮件,报警
使用了smtplib等第三方库,进行发送邮件,完成邮件报警功能
如下是实例 :
#!/usr/bin/python
import glob
import operator
from optparse import OptionParser
import smtplib
import email.MIMEText as MIMEText
import email.Utils.formadate as formatdate
msg = ""
#主方法
def main():
global options
global msg
parser = OptionParser(add_help_option=False)
parser.add_option("-m", "--mail", dest="mail", type="str", help="email address to send report result (comma separated)")
parser.add_option("-t", "--title", dest="title", type="str", help="email title (default:Error File Count)")
parser.add_option("-a", "--admin", dest="admin", type="str", help="set sender address. works with -m option")
(options, args) = parser.parse_args()
#这里监控文件夹下的文件数,超出25个文件即报警
datanum = cntFiles("/data/","csv")
if (operator.gt(datanum,25)):
msg += " Please be alert : \n the number of files under /data/ path is greater than 25 :"
msg += "\n =========================================="
msg += "\n The number of files is : " + str(datanum)
sendmsg(options,msg)
print("==== end ====")
#添加发送邮件的信息
def sendmsg(options,msg):
if options.mail:
toAddr = options.mail
if options.admin:
fromAddr = options.admin
else:
fromAddr = 'zhangsan@neiyou.cn'#这里是公司的公用SMTP邮箱账号
if options.title:
subject = options.title
else:
subject = 'File Stacking Alarm'
msg += "\n ========================================== \n"
print( msg)
msg = createMsg(fromAddr, toAddr, subject, msg)
print( msg)
send(fromAddr, toAddr, msg)
else:
print( msg)
#glob方法,统计文件夹下的文件数
def cntFiles(in_directory, ext):
stage = len(glob.glob1(in_directory,"*." + ext))
return stage
#创建邮件头
def createMsg(fromAddr, toAddr, subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['To'] = toAddr
msg['From'] = fromAddr
msg['Date'] = formatdate()
return msg
#发送邮件
def send(fromAddr, toAddr, msg):
try:
#这里添加公司的SMTP邮箱地址
s = smtplib.SMTP('192.168.12.120')
s.sendmail(fromAddr, toAddr.split(','), msg.as_string())
s.close()
print("SUCCESS: sending email")
except smtplib.SMTPException:
print("ERROR: sending email")
if __name__ == '__main__':
main()
linux上做计划任务,把指令添加进计划任务中:
Errymsfileemail.py -m zhangsan@gongsi.cn -t "[ERROR/$HOST] File Stacking Alarm"
来源:https://www.cnblogs.com/weijiazheng/p/12910061.html


猜你喜欢
- 前言:数据的排序是比较常用的操作,DataFrame 的排序分为两种,一种是对索引进行排序,另一种是对值进行排序,接下来就分别介绍一下。1.
- 对于字典的操作,本篇介绍的是在其中添加值的方法,下面带来详细的介绍。1、通过键=值的方式进行添加。如果键存在,则会将旧的值进行覆盖,如果不存
- 本文实例讲述了JavaScript导出Excel的方法。分享给大家供大家参考。具体实现方法如下:<html xmlns="h
- 性能监控一、web项目(如gin中)1.使用ginpprofimport "github.com/DeanThompson/gin
- 如下所示:#! /usr/bin/env python# coding=utf-8#############################
- 前言这个只是使用面向对象的方法写的 构思和学生管理系统(JSON模块)是一样的file_manager.py""&quo
- 前言常见的通知方式有:邮件,电话,短信,微信。短信和电话:通常是收费的,较少使用;邮件:适合带文件类型的通知,较正式,存档使用;微信:适合告
- 看到豆瓣上有网友提了这个问题,看到回答的人不多,忍不住写了下面的内容。工作中最常用到的统计方法有哪些?根据我自己的经验给举些例子。1.通过一
- 一、背景:在平时工作中有遇到端口检测,查看服务端特定端口是否对外开放,常用nmap,tcping,telnet等,同时也可以利用站长工具等w
- 前言大家好最近python爬虫有点火啊,啥python爬取马保国视频……我也来凑个热闹,今天我们来试着做个翻译软件……不是不是,说错了,今天
- 这样的语句,很显然,造成这个原因是因为setcookie造成的,查了一下网上,有如下的解释:
- PDOStatement::bindParamPDOStatement::bindParam — 绑定一个参数到指定的变量名(PHP 5 &
- 一,设计背景 由于所在公司ORACLE数据库较多,传统人工监控表空间的方式较耗时,且无法记录历史表空间数据,无法判断每日表空间增长
- 一、视图的基本概念视图是用于查询的另外一种方式。 与实际的表不同,它是一个虚表;因此数据库中只存在视图的定义,而不存在视图中相对应的数据,数
- 打包依赖文件至目标程序目录问题我使用 PySide2 开发了一个应用程序,为了方便其他人使用,我便使用 PyInstaller 打包成 *.
- 引言“ 这是MySQL系列笔记的第十一篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,
- 查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2、I/O吞吐量小,形成了瓶颈
- 名词解释断号:比如,连续生成的编号,由于某种操作(通常为删除)后,产生不连续的编号,我们将这种不连续的编号称为断号。例如,数据库中有一个字段
- 使用Matplotlib绘制的图表的默认坐标轴是在左下角的,这样对于一些函数的显示不是非常方便,要改变坐标轴的默认显示方式主要要使用gca(
- 我就废话不多说了,大家还是直接看代码吧try: s = socket.socket() s.bind(('127.0.0.1'