使用Python脚本检测服务器信息并定时发送至管理员邮箱

news2024/9/24 7:15:29

在日常的系统管理工作中,监测服务器的资源占用情况至关重要,我们需要及时获得通知以便采取相应措施。我新装了一台UbuntuServer服务器,写了一个可以定期收集服务器的CPU、内存、网络和磁盘信息,并通过邮件将这些信息发送给管理员的Python脚本,分享一下。

看效果:

 话不多说,直接上源码:

用到了psutil先安装一下需要的psutil库:

pip install psutil

mail.py

import psutil  
import smtplib  
from email.mime.text import MIMEText  
from email.mime.multipart import MIMEMultipart  
import datetime  
  
# 配置SMTP服务器和邮箱信息  
smtp_server = # SMTP服务器地址  
smtp_port =   # SMTP服务器端口  
sender_email =    # 发件人邮箱  
password =    # 发件人邮箱密码  
receiver_email =  # 管理员邮箱  
  
def get_system_info():  
    # 获取当前时间  
    now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")  

    # CPU信息  
    cpu_count = psutil.cpu_count(logical=False)  
    cpu_percent = psutil.cpu_percent(interval=1)  

    # 内存信息  
    memory = psutil.virtual_memory()  
    mem_total = round(memory.total / (1024.0 ** 3), 2)  
    mem_used = round(memory.used / (1024.0 ** 3), 2)  
    mem_percent = memory.percent  

    # 网络信息  
    net_io_counters = psutil.net_io_counters()  
    bytes_sent = round(net_io_counters.bytes_sent / (1024.0 ** 3), 2)  
    bytes_recv = round(net_io_counters.bytes_recv / (1024.0 ** 3), 2)  

    # 磁盘信息  
    disk_usage = psutil.disk_usage('/')  
    disk_total = round(disk_usage.total / (1024.0 ** 3), 2)  
    disk_used = round(disk_usage.used / (1024.0 ** 3), 2)  
    disk_percent = disk_usage.percent

    # 格式化信息  
    system_info = f"""  
    Time: {now}  
    CPU Count: {cpu_count}  
    CPU Usage: {cpu_percent}%  
    Memory Total: {mem_total} GB  
    Memory Used: {mem_used} GB  
    Memory Usage: {mem_percent}%  
    Bytes Sent: {bytes_sent} GB  
    Bytes Received: {bytes_recv} GB  
    Disk Total: {disk_total} GB  
    Disk Used: {disk_used} GB  
    Disk Usage: {disk_percent}%  
    """  

    return system_info  
  
def send_email(subject, body, sender, password, receiver):  
    msg = MIMEMultipart()  
    msg['From'] = sender  
    msg['To'] = receiver  
    msg['Subject'] = subject  
    msg.attach(MIMEText(body, 'plain'))  

    server = smtplib.SMTP(smtp_server, smtp_port)  
    server.starttls()  
    server.login(sender, password)  
    text = msg.as_string()  
    server.sendmail(sender, receiver, text)  
    server.quit()  
  
# 获取系统信息  
system_info = get_system_info()  
  
# 发送邮件  
subject = 'UbuntuServer System Information'  
send_email(subject, system_info, sender_email, password, receiver_email)

注意画框的部分要写填你自己的信息

把mail.py复制下来,现在可以运行测试一下,运行一次即可向管理员邮箱发一次信息。

再打开命令行使用corn让它定时运行:

编辑当前用户的crontab文件

crontab -e

打开编辑器中,添加任务(写你自己的路径)

0 */2 * * * /path/to/your/script/mail.py

这行的含义是:

  • 0 表示在每小时的第0分钟运行。
  • */2 表示每两个小时。
  • * 表示每天的任意一天。
  • * 表示每个月的任意一月。
  • * 表示每周的任意一周。
  • /path/to/your/script/mail.py 是你的mail.py脚本的完整路径。

我设置的是两个小时执行一次,确保将/path/to/your/script/mail.py替换为你的mail.py脚本的实际路径。

保存并关闭文件后,cron会自动加载新的定时任务。你可以使用以下命令来查看当前用户的cron任务:

crontab -l

如果设置成功就可以等待接收邮件了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606699.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万字总结!Docker简介及底层关键技术剖析

本文首发在个人博客上:万字总结!Docker简介及底层关键技术剖析 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#x…

OpenHarmony网络请求库-httpclient

简介 HTTP是现代应用程序通过网络交换数据和媒体的的主要方式。httpclient是OpenHarmony 里一个高效执行的HTTP客户端,使用它可使您的内容加载更快,并节省您的流量。httpclient以人们耳熟能详的OKHTTP为基础,整合android-async-http&#xf…

【SQL每日一练】分组过滤练习题

文章目录 前言MySQL语法注意: 前言 题目:现在运营想查看每个学校用户的平均发贴和回帖情况,寻找低活跃度学校进行重点运营,请取出平均发贴数低于5的学校或平均回帖数小于20的学校。 drop table if exists user_profile; CREATE …

用exe4j将jar包打包成exe可执行文件

首先,可以通过百度网盘下载安装exe4j: 链接:https://pan.baidu.com/s/1YmfVwor2ZDmDi-sDqNUsBw?pwd=a2sq 提取码:a2sq 安装好之后打开exe4j,我这里之前做过配置了已经有配置文件,就一步步截图 定义exe文件名与输出目录 输出日志:

CTFHub(web SQL注入)

CTFHub技能树 Web-SQL注入 详解_666c6167-CSDN博客 Ctfhub - web -- SQL注入_ctfhub sql注入-CSDN博客 整数型注入 方法一 根据提示输入1, 闭合方式就是 1 ,整数型 存在两列,这里已经给出了字段,不需要再order by了 爆出数据库…

彻底解决:IDEA java: 警告: 源发行版 17 需要目标发行版 17

一、出现的原因 JDK版本不匹配 二、解决方法 1.点击File -->Project Structure-->Project 修改这两处 2.在Project Structure-->Modules中的红框位置都要调整对应版本 3.点击File-->settings-->java compile将对应框的版本修改成对应版本即可 4.修改Pom文件中…

Docker容器嵌入式开发:在Ubuntu上配置RStudio与R语言、可视化操作

目录 一、dirmngr工具二、R环境安装与配置三、验证是否安装成功四、安装Rstudio五、可视化操作参考 以上是在Ubuntu 18.04上安装最新版本的R语言环境的步骤摘要。首先,通过添加CRAN镜像源并安装GPG密钥来配置软件源。然后,更新软件包列表并通过apt安装R语…

《Kubernetes部署篇:基于Kylin V10+ARM架构CPU+外部etcd使用containerd部署K8S 1.26.15容器版集群(多主多从)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:企业级K8s集群运维实战 1、在当前实验环境中安装K8S1.25.14版本,出现了一个问题,就是在pod中访问百度网站,大…

通过修改注册表,允许Windows电脑使用USB

在Windows操作系统中,如果您需要通过修改注册表来启用或允许USB存储设备的读写权限,通常涉及到更改与USB存储类驱动相关的服务启动类型。下面是大致步骤: 启用USB存储设备: 打开注册表编辑器(按 Win R 键,…

Mac中隐私安全性设置-打开任何来源

文章目录 **Mac中隐私安全性设置-打开任何来源**一、目的二、打开方式 Mac中隐私安全性设置-打开任何来源 一、目的 从外部下载的软件频繁打不开,需要从隐私安全性中重新选择一下;默认Mac隐藏了任何来源 二、打开方式 打开终端,输入一下命…

LabVIEW卡尔曼滤波技术

LabVIEW卡尔曼滤波技术 在现代航空导航中,高精度和快速响应的方位解算对于航空安全至关重要。通过LabVIEW平台实现一种卡尔曼滤波方位解算修正技术,以改善传统导航设备在方位解算中的噪声干扰问题,从而提高其解算精度和效率。通过LabVIEW的强…

广告智能投放工具oCPM 计费方式演进

广告计费方式概览 在互联网发展的二十年里,互联网广告的计费方式从 CPT(时间)开始,总共发生了三次较大的迭代进化,大致分为 CPM(曝光)、CPC(点击)和 oCPM(目…

工作流JBPM操作API删除流程部署流程

文章目录 8.3 删除流程定义8.3.1 按照id删除(有关联信息会抛异常)8.3.2 按照id删除(会删除关联信息)8.3.3 按照key删除 8.4 获取部署时的文件资源8.4.1 获取部署时的文件资源方式18.4.2 获取部署时的文件资源方式2 8.3 删除流程定义 删除流程定义可以按照id和key删除。 8.3.1…

#LLM入门|RAG#3.5_基于文档的问答

大语言模型(LLM)构建的问答系统,通过整合用户文档,提供个性化和专业化回答。系统可检索内部文档或产品说明书,结合语言模型生成精准答案。 这种方法让语言模型利用外部文档专业信息,显著提升回答的质量和适…

计算机系统基础知识总结

一、计算机系统概述 计算系统可以分为硬件和软件两部分。硬件主要有中央处理器、存储器、输入和输出设备组成;软件由系统软件和应用软件组成。 冯诺依曼计算机体系:将硬件划分为:输入、输出、运算器、存储器、控制器五部分。 中央处理器&…

【计算机毕业设计】学习平台功能介绍——后附源码

🎉**欢迎来到我的技术世界!**🎉 📘 博主小档案: 一名来自世界500强的资深程序媛,毕业于国内知名985高校。 🔧 技术专长: 在深度学习任务中展现出卓越的能力,包括但不限于…

工作流JBPM操作API办理任务流程变量

文章目录 8.7 办理任务8.7.1 办理个人任务8.7.2 办理个人组任务 8.8 驳回任务8.9 流程变量8.9.2 设置流程变量8.9.3 获取流程变量 8.7 办理任务 8.7.1 办理个人任务 办理前数据表中: 办理任务: // 办理个人任务 Test public void comPeletePersonTas…

荣誉 | 人大金仓获评轨交行业“智慧运维优秀应用案例”

4月12日至13日,2024(第八届)中国城市轨道交通智慧运维大会在成都顺利举行。会上,人大金仓以其在轨交行业的卓越贡献和创新实践,获评“智慧运维优秀应用案例”。公司副总裁梁红凤出席大会并发表了题为“打造世界一流的数…

K8s: 关于Kubernetes中的Pod的创建,实现原理,Job调度pod以及pod网络

Pod 概述 Pod 是最小部署的单元,Pod里面是由一个或多个容器组成,也就是一组容器的集合一个pod中的容器是共享网络命名空间,每个Pod包含一个或多个紧密相关的用户业务容器Pod 是 k8s 系统中可以创建和管理的最小单元是资源对象模型中由用户创…

[开发日志系列]PDF图书在线系统20240415

20240414 Step1: 创建基础vueelment项目框架[耗时: 1h25min(8:45-10:10)] 检查node > 升级至最新 (考虑到时间问题,没有使用npm命令行执行,而是觉得删除重新下载最新版本) > > 配置vue3框架 ​ 取名:Online PDF Book System 遇到的报错: 第一报错: npm ERR! …