首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python脚本,用于监视服务的systemctl状态,如果返回false,则通过sendmail发送电子邮件

Python脚本是一种使用Python编写的可执行文件,用于自动化监视服务的systemctl状态并在状态异常时通过sendmail发送电子邮件通知。

systemctl是一个系统管理工具,用于管理Linux系统上的服务。它可以启动、停止、重启、查看服务状态等操作。监视服务的systemctl状态可以帮助我们及时发现服务异常并采取相应的措施。

在Python脚本中,我们可以使用subprocess模块调用systemctl命令,并通过解析命令输出来获取服务的状态。如果状态为false,即服务异常,我们可以使用smtplib模块中的sendmail函数发送电子邮件通知。

以下是一个示例的Python脚本,用于监视服务的systemctl状态并发送电子邮件通知:

代码语言:txt
复制
import subprocess
import smtplib
from email.mime.text import MIMEText

def check_service_status(service_name):
    try:
        # 调用systemctl命令获取服务状态
        result = subprocess.run(['systemctl', 'is-active', service_name], capture_output=True, text=True)
        status = result.stdout.strip()
        if status == 'active':
            return True
        else:
            return False
    except Exception as e:
        print(f"Error checking service status: {e}")
        return False

def send_email(subject, body, sender, receiver, smtp_server, smtp_port, smtp_username, smtp_password):
    try:
        # 创建邮件内容
        message = MIMEText(body)
        message['Subject'] = subject
        message['From'] = sender
        message['To'] = receiver

        # 连接SMTP服务器并发送邮件
        with smtplib.SMTP(smtp_server, smtp_port) as server:
            server.login(smtp_username, smtp_password)
            server.sendmail(sender, receiver, message.as_string())
        print("Email sent successfully")
    except Exception as e:
        print(f"Error sending email: {e}")

if __name__ == "__main__":
    service_name = "your_service_name"
    sender = "sender@example.com"
    receiver = "receiver@example.com"
    smtp_server = "smtp.example.com"
    smtp_port = 587
    smtp_username = "your_smtp_username"
    smtp_password = "your_smtp_password"

    if not check_service_status(service_name):
        subject = "Service Status Alert"
        body = f"The service {service_name} is not active"
        send_email(subject, body, sender, receiver, smtp_server, smtp_port, smtp_username, smtp_password)

在上述示例中,我们首先定义了两个函数:check_service_status用于检查服务状态,send_email用于发送电子邮件。然后,在主函数中指定了要监视的服务名称、发件人、收件人、SMTP服务器信息等。

脚本会首先调用check_service_status函数检查服务状态,如果状态为false,则调用send_email函数发送电子邮件通知。你可以根据实际需求修改脚本中的相关参数,并根据需要添加异常处理、日志记录等功能。

对于发送电子邮件的功能,你可以选择使用腾讯云提供的邮件推送服务,例如腾讯云的"邮件推送(Cloud Email)"产品。该产品提供了稳定可靠的邮件发送服务,支持多种编程语言和开发环境。

希望以上内容能够帮助你理解并实现监视服务状态并发送电子邮件通知的Python脚本。如有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用Logwatch查看系统日志

更高级用户还可以将Logwatch与它们自己分析脚本对比,以获得更准确系统状态报告。 默认情况下,Logwatch使用Sendmail发送摘要。 注意本指南中所需步骤需要root权限。...启动postfix服务systemctl start postfix CentOS 7 更新您系统: yum update 安装Logwatch和Sendmail: yum install...这是使用stdout默认设置Output变量定义如果您打算只是手动运行Logwatch,但是不保存日志或将日志发送给您以供稍后阅读,此选项是可行。...如果使用Arch,并按照上述安装说明操作,Sendmail已经为msmtp设置了别名。 将Output值更改为mail。如果您希望以HTML格式接收消息,请将Format值更改为html。...--mailto:将报告发送本地用户或电子邮件地址。 通过Cron运行Logwatch 配置为每天运行并发送或保存报告以供日后查看时,Logwatch通常效果最佳。

6.9K30

干货 | 你是不是也有多进程管理困惑呢?

通过脚本对进程进行监控,如果进程数变化,通过邮件预警。 4)脚本循环检测+定时重启。 即便如此,仍然不够高效。 有没有可视化、批量操作、自动重启、自动邮件预警管理工具呢?...5、多进程管理工具Supervisor Supervisor是一个Python编写客户端/服务器工具,允许用户在类UNIX操作系统上控制大量进程。...当进程意外进入EXITED退出状态时,它向用户发送电子邮件。这点,解决了我得困惑!...在配置时间间隔内生成所有致命开始事件都会一起批处理以避免发送太多电子邮件。 6)crashsms——除了通过电子邮件网关发送SMS警报外,它与crashmailbatch类似。...步骤3:安装SendMail 核心:借助SendMail发送邮件。

1K20

如何在Ubuntu 16.04上安装和配置NATS

这种类型系统非常适合监控服务器和设备; 设备可以发送消息,我们可以订阅这些消息,通过电子邮件或其他方式发送通知。 在本教程中,我们将安装gnatsd官方NATS服务器作为服务,并以安全方式访问它。...Restart=on-failure表示如果服务崩溃或因故障终止,必须重新启动该服务如果它被systemd停止,它将不会重新启动。 该 [Install]部分包含有关服务安装信息。...甲通知,该订阅stats.loadaverage主题,并接收服务主机名,平均负载和处理器计数。如果主机负载平均值高于某个阈值,通知程序通过SMTP服务器向预定义地址发送电子邮件。...如果它高于0.6或每个处理器60%CPU利用率,它会为发布消息主机设置警告标志,并将电子邮件发送到预定义地址。如果每个处理器平均负载小于0.4,清除主机警告标志。...如果它太高,我们发送消息,并且我们通过根据主机名设置标志来跟踪我们之前是否已发送过消息。这样我们就可以按主机跟踪通知。如果平均负载低于我们阈值,我们清除该标志。

3.6K00

如何在Ubuntu 16.04上安装Bro

通过电子邮件发送活动,摘要和崩溃报告和警报 执行IP地址到城市级别的地理定位 以独立或分布式模式运行 Bro可以从源代码或通过包管理器安装。...在服务器上安装Postfix作为仅发送邮件传输代理(MTA)。必须为Bro安装像Postfix这样MTA才能发送电子邮件警报。它将在没安装情况下可以运行,但不会发送电子邮件。...所有Bro电子邮件警报都将发送到该地址。...$ sudo /usr/local/bro/bin/broctl deploy 每当对配置文件或脚本进行更改时,也应该运行此命令。 注意:如果Bro未启动,命令输出将提示原因。...第六步 - 为Bro配置cron Bro没有Systemd服务描述符文件,但它带有一个cron脚本如果启用它,它将重新启动Bro,如果它崩溃并执行其他任务,如检查足够磁盘空间和删除过期日志文件。

1.1K50

Keepalived 原理介绍和配置实践

Keepalived 将根据用户设定检查服务器程序运行是否正常,如果与用户设定不相符, Keepalived 将把服务器从服务器群中剔除。...keepalived 通过选举(看服务器设置权重)挑选出一台热备服务器做 MASTER 机器,MASTER 机器会被分配到一个指定虚拟 ip,外部程序可通过该 ip 访问这台服务器,如果这台服务器出现故障...,每2s检测一次 weight -20 #脚本结果导致优先级变更,检测失败(脚本返回非0)优先级 -20 fall 2..."python /etc/keepalived/sendMail.py maser" ## 当节点切换到master时触发脚本 notify_backup "python /etc/keepalived.../sendMail.py backup" ## 当节点切换到backup时触发脚本 notify_fault "python /etc/keepalived/sendMail.py fault

4.2K50

如何使用 Fail2Ban 配置保护您 Linux 服务器?

Fail2Ban 是一个日志解析应用程序,可保护基于 Linux Web 服务器免受许多安全威胁,例如字典、DoS、DDoS 和暴力攻击,它通过监视系统日志中任何恶意活动并扫描文件以查找与已识别模式匹配任何条目来工作...运行以下命令:apt-get update && apt-get upgrade通过运行以下命令安装 Fail2Ban 包:apt-get install fail2ban如果要为 Fail2Ban 服务添加电子邮件支持...,请插入以下命令并按Enter:apt-get install sendmail使用以下命令验证 Fail2Ban 状态:sudo systemctl status fail2banCentOS:按照以下步骤在...,请运行以下命令安装 Sendmail:apt-get install sendmail-bin sendmail以下是检查 Fail2Ban 状态方法:systemctl status fail2banFedora...如果要安装 Sendmail,请输入以下命令并按Enter:dnf install sendmail通过运行以下命令启动并启用 Fail2Ban 服务systemctl start fail2bansystemctl

2.3K40

Python 自动化指南(繁琐工作自动化)第二版:十八、发送电子邮件和短信

SMTP 就像 HTTP 是计算机通过互联网发送网页协议一样,简单邮件传输协议(SMTP) 是用于发送电子邮件协议。...调用expunge()然后永久删除带有\Deleted标志消息,如果删除电子邮件没有问题,返回一条成功消息。...记住,如果 SMTP 服务器报告发送特定电子邮件时出错,那么sendmail()方法将返回一个非空字典值。...在 ➍ 处for循环最后一部分检查返回字典是否为非空,如果是,打印收件人电子邮件地址和返回字典。 在程序发送完所有邮件后,调用quit()方法来断开与 SMTP 服务连接。...Python smtplib提供了使用 SMTP 通过电子邮件运营商 SMTP 服务发送电子邮件功能。

11.1K40

自动化部署nginx负载均衡及监控短信报警

题: 开发脚本自动部署及监控 1.编写脚本自动部署反向代理、web、nfs; 要求: I、部署nginx反向代理三个web服务,调度算法使用加权轮询; II、所有...web服务使用共享存储nfs,保证所有web都对其有读写权限,保证数据一致性; 2.编写监控脚本,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常发送报警邮件 3.编写计划任务,...定时运行监控脚本,完成监控操作 ------------------------------------------------------ 1、安装nginx及nfs服务端 #!...,监控集群内所有服务存活状态,内存、磁盘剩余率检测,异常发送报警邮件 #!...(content, _charset='utf-8') msg.attach(txt) sendmail(server,port,user,pwd,msg) 2)将监控脚本重命名为mail,拷贝到/

1.1K20

CentOS 7.5 部署postfix邮件系统

通过网络电子邮件系统,用户可以以非常低廉价格(不管发送到哪里,都只需负担网费)、非常快速方式(几秒钟之内可以发送到世界上任何指定目的地),与世界上任何一个角落网络用户联系。...如果有多个邮件在邮件缓存中,SMTP客户一一将它们发送到远程SMTP服务器。...配置了SMTP协议电子邮件服务器称为SMTP服务器。SMTP服务器接收客户机发送电子邮件,向其他SMTP服务发送电子邮件,但不能从别的SMTP服务器接收电子邮件 2....POP3服务器将电子邮件发送给客户机或者从别的POP3服务器接收电子邮件,但不能向别的POP3邮件服务发送电子邮件 1.5 Postfix 介绍 Postfix 是一种电子邮件服务器,它是由任职于IBM...切换到配置Postfix服务程序时创建chenfj账户,并在家目录中建立用于保存邮件目录。至此,对Dovecot服务程序配置部署步骤全部结束。 4.

8.8K21

centos7x操作系统搭建postfix邮件服务

简单邮件传输协议(Simple Mail Transfer Protocol,SMTP):用于发送和中转发出电子邮件,占用服务25/TCP端口。  ...邮局协议版本3(Post Office Protocol 3):用于电子邮件存储到本地主机,占用服务110/TCP端口。  ...准备环境: 首先我们检查我们服务器能否telnet通我们要发送一些邮件服务端口,比如qq,163,gmail等,如果不通的话需要更换服务器,因为此服务器商将这些给拦截了,正常现象是: 我们需要开放我们需要端口...,端口有25(SMTP服务用于发送邮件),110(pop3服务用于接收邮件)143(imap服务用于接收邮件)如果你只想用pop3服务,那么我们只需要打开110和25端口即可,如果我们使用了ssl...3.1 安装 postfix在centos7里我们postfix是系统自带,但是centos7以前版本是默认不带,centos7版本以前是sendmail如果没有安装 :yum install

2K40

Python自动发送4种形式邮件,你会了吗?

发送邮件有不同形式,比如:文本、HTML、txt附件、图片附件等,如何通过Python操作呢?今天我们一起来实现Python自动发送这4种形式邮件。...只不过通过脚本发送时我们需要考虑到整个过程细节,以下为实现思路思维导图: 2Python email模块 发送邮件相关 Python 模块: smtplib:是关于 SMTP(简单邮件传输协议)...SMTP是建立在FTP文件传输服务一种邮件服务,主要用于系统之间邮件信息传递,并提供有关来信通知。...使用SMTP,可实现相同网络处理进程之间邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间邮件传输。 在使用Python脚本发送邮件之前,我们需要开通自己邮箱 SMTP 功能。...若为QQ邮箱,服务端为smtp.qq.com,若为163邮箱,服务端为smtp.163.com,其他邮箱可自行百度查询。 1发送文本邮件 首先,我们先发送一封简单文本邮件,小试牛刀一把。

81820

PostFix+Dovecot 部署邮件系统

Postfix 是MTA邮件传输代理软件.是sendmail提供替代品一个尝试,在Internet世界中,大部分电子邮件都是通过sendmail来投递,大约有100万用户使用sendmail,每天投递上亿封邮件...PostFix工作流程图解 1.客户端通过Outlook或网页客户端软件,向邮件服务发送一封邮件,首先邮件服务器会检查是发往本域,还是发往其他域. 2.如果发送到本域直接存放到Mailbox中,另外一个用户上线...我们假设 张三通过oschina.net邮箱zhangsan@oschina.net发送一份邮件给 李四lisi@mydomain.com,服务器接收邮件过程大致如下图所示: 1.zhangsan...postfix是由IBM赞助研发一款免费开源电子邮件服务程序,它能够很好兼容sendmail,可以很方便sendmail用户迁移到postfix服务上,postfix服务收发邮件能力强于sendmail...~]# systemctl enable postfix [root@localhost ~]# systemctl enable dovecot 5.如果iptables在开启状态,那么设置iptables

2.6K20

如何部署邮件服务

邮件服务器是一种应用程序,它使我们能够以电子邮件形式在组织不同用户之间或在其外部发送消息,而不依赖于他们所连接网络。...IMAP(Internet消息访问协议)是一种允许电子邮件客户端连接到电子邮件帐户并显示存储电子邮件协议。SMTP(简单邮件传输协议)是一种基于文本协议,用于在不同设备之间交换邮件。...MTA(邮件传输代理)是一种服务器,其功能是在Internet上传输电子邮件及其管理。一些已知MTA有Sendmail,Postfix等。Dovecot是一个传入邮件服务器,它支持上述协议。...本教程将指导您在CentOS上配置我们邮件服务器。您需要一台云服务器来部署您邮件服务如果您还没有腾讯云服务器,可以先点击这里进行免费套餐试用。...sudo yum -y install --disablerepo = epel * 安装必要应用程序 完成上一个过程后,我们将安装以下应用程序: Sendmail (将用于发送电子邮件) Dovecot

3.7K62

如何在CentOS 7上使用Fail2Ban保护SSH

destemail = root@localhost sendername = Fail2Ban mta = sendmail 如果要配置电子邮件警报,您可能需要重写destemail,sendername...该destemail参数设置应接收禁止消息电子邮件地址。该sendername套在电子邮件“发件人”字段值。该mta参数配置将用于发送邮件邮件服务。...如果您希望电子邮件包含相关日志行,则可以将其更改为action_mwl。如果选择使用邮件警报,则需要确保已配置相应邮件设置。...但是,您可以通过查看该目录来查看可用过滤器类型: ls /etc/fail2ban/filter.d 如果您看到一个看起来与您正在使用服务相关文件,则应使用文本编辑器将其打开。...首先用systemctl于检查服务状态: sudo systemctl status fail2ban 如果这里看起来不对劲,您可以通过检查fail2ban自上次启动后设备日志来进行故障排除: sudo

2.7K00

BATSIGN 世界上最简单个人电子邮件通知 API

Batsign Personal 是一项免费服务,没有专门收费计划。 Batsign.me 缓解了什么痛点? 设置电子邮件服务器可能既复杂又痛苦。...安装电子邮件客户端是一个额外系统依赖项,也需要进行配置。 Batsign 构建是为了让设置电子邮件通知变得非常容易。 限制? 只能给自己发送一封电子邮件电子邮件只能是纯文本。您无法更改主题行。...电子邮件正文只能是一定长度。 使用Batsign与仅使用sendmail相比有何不同? 启用个人电子邮件通知在Batsign上是一个一步过程。而sendmail设置需要多个步骤。...如果已经能够访问一个sendmail服务器,那么两者之间可能没有太大差别,尽管仍然需要配置一个电子邮件客户端。...为什么POST请求中需要包含"/your@e.mail/",使用随机UUID来防止伪造Batsign不是更好吗? URL中电子邮件地址使得容易确定消息将发送地址。

10510
领券