当前位置: 首页 > news >正文

linux监控脚本+自动触发邮件发送

linux脚本

需求:

  • CPU 负载:使用 uptime 命令,我们可以清楚地了解系统的 CPU 负载情况。这个命令会显示系统在过去 1 分钟、5 分钟和 15 分钟的平均负载。高负载可能意味着系统正在处理大量的任务,可能会导致性能下降或服务响应延迟。

  • 内存使用:通过 free -m 命令,我们可以以 MB 为单位查看系统的内存使用情况,包括已使用内存、空闲内存、缓存和交换空间。这有助于我们判断系统是否需要更多的内存资源,或者是否存在内存泄漏等问题。

  • 磁盘使用df -h 命令为我们提供了磁盘空间使用情况的信息,让我们清楚地知道各个文件系统的使用比例。当磁盘空间接近饱和时,会严重影响系统的正常运行,甚至导致服务无法写入数据。

  • 网络状态ifconfig 命令可以让我们查看网络接口的状态,包括 IP 地址、MAC 地址、接收和发送的数据包数量等,帮助我们确保网络连接的正常。

  •  服务状态检查:你可以添加检查服务是否正在运行的功能,比如检查 Apache 服务器是否正在运行,可以使用 systemctl status apache2 或 service apache2 status 命令,并将结果添加到报告中。

开发脚本内容:

#!/bin/bash# 定义报告文件和错误日志文件
REPORT_FILE="/root/linux_inspection_report.txt"
HTML_REPORT="/root/linux_inspection_report.html"
ERROR_LOG="/root/linux_inspection_error.log"
DATE=`date "+%Y-%m-%d %H:%M:%S"`> $REPORT_FILE
> $ERROR_LOGcat<<EOF > $HTML_REPORT
<!DOCTYPE html>
<html>
<head>
<title>Linux System Inspection Report</title>
</head>
<body>
<h1>Linux System Inspection Report</h1>
<p>Date:$DATE</p>
EOF#uptime
echo "<h2>System load</h2>" >> $HTML_REPORTif LOAD=`uptime 2>> $ERROR_LOG`
thenecho "<p>$LOAD</p>" >> $HTML_REPORT
elseecho "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fiecho "<h2>Disk Usage</h2>" >> $HTML_REPORT
if DISK_USAGE=`df -h 2>> $ERROR_LOG`
thenecho "<p>$DISK_USAGE</p>" >> $HTML_REPORT
elseecho "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fiecho "<h2>Memory Usage</h2>" >> $HTML_REPORT
if MEMORY_USAFE=`free -m 2>> $ERROR_LOG`
thenecho "<p>$MEMORY_USAFE</p>" >> $HTML_REPORT
elseecho "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fiecho "<h2>Network Status</h2>" >> $HTML_REPORT
if NETWORK_STATUS=`ifconfig 2>> $ERROR_LOG`
thenecho "<p>$NETWORK_STATUS</p>" >> $HTML_REPORT
elseecho "<p>Error occrred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fiecho "<h2>Nginx Service Status</h2>" >> $HTML_REPORT
if NGINX_STATUS=`systemctl status nginx 2>> $ERROR_LOG`
thenecho "<p>$NGINX_STATUS</p>" >> $HTML_REPORT
elseecho "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fi#
echo "</body></html>

脚本文件需要设置可执行权限

# chmod  +x  jiankong.sh 

执行结果如下:

[root@hcss-ecs- ~]# ll
total 32
-rwxr-xr-x 1 root root  1725 Jan 27 14:12 jiankong.sh
-rw-r--r-- 1 root root     0 Jan 27 14:12 linux_inspection_error.log
-rw-r--r-- 1 root root  2960 Jan 27 14:12 linux_inspection_report.html
-rw-r--r-- 1 root root     0 Jan 27 14:12 linux_inspection_report.txt
-rw------- 1 root root 16817 Jan 27 14:12 sent

 执行记录的文件内容如下:

[root@hcss-ecs-6f98 ~]# cat linux_inspection_report.html 
<!DOCTYPE html>
<html>
<head>
<title>Linux System Inspection Report</title>
</head>
<body>
<h1>Linux System Inspection Report</h1>
<p>Date:2025-01-27 14:12:24</p>
<h2>System load</h2>
<p> 14:12:24 up  4:49,  3 users,  load average: 0.00, 0.00, 0.00</p>
<h2>Disk Usage</h2>
<p>Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        389M     0  389M   0% /dev
tmpfs           405M     0  405M   0% /dev/shm
tmpfs           405M  5.6M  399M   2% /run
tmpfs           405M     0  405M   0% /sys/fs/cgroup
/dev/vda1        40G  2.9G   35G   8% /
tmpfs            81M     0   81M   0% /run/user/0</p>
<h2>Memory Usage</h2>
<p>              total        used        free      shared  buff/cache   available
Mem:            808         187         391           7         229         490
Swap:             0           0           0</p>
<h2>Network Status</h2>
<p>eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.5.15  netmask 255.255.240.0  broadcast 192.168.15.255inet6 fe80::f816:3eff:fe68:c5cf  prefixlen 64  scopeid 0x20<link>ether fa:16:3e:68:c5:cf  txqueuelen 1000  (Ethernet)RX packets 79035  bytes 68357573 (65.1 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 43600  bytes 7583848 (7.2 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 1454  bytes 113048 (110.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 1454  bytes 113048 (110.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0</p>
<h2>Nginx Service Status</h2>
<p>● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)Active: active (running) since Mon 2025-01-27 09:42:01 CST; 4h 30min agoProcess: 13209 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)Process: 13206 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)Process: 13205 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)Main PID: 13210 (nginx)Tasks: 3 (limit: 4976)Memory: 5.9MCGroup: /system.slice/nginx.service├─13210 nginx: master process /usr/sbin/nginx├─13211 nginx: worker process└─13212 nginx: worker processJan 27 09:42:01 hcss-ecs-6f98 systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jan 27 09:42:01 hcss-ecs-6f98 nginx[13206]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jan 27 09:42:01 hcss-ecs-6f98 nginx[13206]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jan 27 09:42:01 hcss-ecs-6f98 systemd[1]: Started The nginx HTTP and reverse proxy server.</p>
</body></html>

发送到的邮箱邮件内容如下:

相关文章:

linux监控脚本+自动触发邮件发送

linux脚本 需求&#xff1a; CPU 负载&#xff1a;使用 uptime 命令&#xff0c;我们可以清楚地了解系统的 CPU 负载情况。这个命令会显示系统在过去 1 分钟、5 分钟和 15 分钟的平均负载。高负载可能意味着系统正在处理大量的任务&#xff0c;可能会导致性能下降或服务响应延迟…...

【漫话机器学习系列】066.贪心算法(Greedy Algorithms)

贪心算法&#xff08;Greedy Algorithms&#xff09; 贪心算法是一种逐步构建解决方案的算法&#xff0c;每一步都选择当前状态下最优的局部选项&#xff08;即“贪心选择”&#xff09;&#xff0c;以期望最终获得全局最优解。贪心算法常用于解决最优化问题。 核心思想 贪心选…...

代码随想录算法训练营第三十八天-动态规划-完全背包-279.完全平方数

把目标值当作背包容量&#xff0c;每个平方数当作物品&#xff0c;题目变更为装满指定容量的背包&#xff0c;最小用几个物品会不会出现拼凑不出来的情况&#xff1f;不会&#xff0c;因为有数字1&#xff0c;对任意正整数百分百能拼凑出来因此此题目与上一道题就变得一模一样了…...

ts 基础核心

吴悠讲编程 : 20分钟学会TypeScript 无废话速成TS https://www.bilibili.com/video/BV1gX4y177Kf...

在RHEL 8.10上安装开源工业物联网解决方案Thingsboard 3.9

在RHEL/CentOS/Rocky/AlmaLinux/Oracle Linux 8单节点上安装 备注&#xff1a; 适用于单节点 是否支持欧拉&#xff1f;&#xff1f;&#xff1f; 前提条件 本指南描述了如何在RHEL/CentOS 7/8上安装ThingsBoard。硬件要求取决于所选的数据库和连接到系统的设备数量。要在单…...

linux通过deb包安装(命令模式)

通过下载deb包安装Chrome浏览器 - lyy19s Wikihttps://lyy1119.github.io/%E8%BD%AF%E4%BB%B6%E4%BD%BF%E7%94%A8/Linux/InstallChrome/...

「Unity3D」在Unity中使用C#控制显示Android的状态栏

Unity打包的Android默认都是全屏&#xff0c;如果想要在真机上显示状态栏&#xff0c;就需要额外设置&#xff0c;有两种方式&#xff1a; 第一种&#xff0c;使用Android的Java代码去控制&#xff0c;然后以插件的方式放到Unity中&#xff0c;被C#调用。第二种&#xff0c;使…...

LLM评估优化与新技术创新综述

标题&#xff1a;LLM评估优化与新技术创新综述 文章信息摘要&#xff1a; LLM评估与优化需要采用多维度方法&#xff0c;包括自动基准测试、人工评估和模型自评估。RAG技术通过结合外部知识库提升模型表现&#xff0c;量化技术则通过降低参数精度优化资源消耗。新兴技术如模型…...

【Git】使用笔记总结

目录 概述安装Git注册GitHub配置Git常用命令常见场景1. 修改文件2. 版本回退3. 分支管理 常见问题1. git add [中文文件夹] 无法显示中文问题2. git add [文件夹] 文件名中含有空格3. git add 触发 LF 回车换行警告4. git push 提示不存在 Origin 仓库5. Git与GitHub中默认分支…...

ZZNUOJ(C/C++)基础练习1000——1010(详解版)

目录 1000 &#xff1a; AB Problem C语言版 C版 1001 &#xff1a; 植树问题 C语言版 C版 1002 &#xff1a; 简单多项式求和 C语言版 C版 1003 &#xff1a; 两个整数的四则运算 C语言版 C版 1004 &#xff1a; 三位数的数位分离 C语言版 C版 补充代…...

搜狐Android开发(安卓)面试题及参考答案

ViewModel 的作用及原理是什么? ViewModel 是 Android 架构组件中的一部分,主要作用是在 MVVM 架构中充当数据与视图之间的桥梁。它负责为视图准备数据,并处理与数据相关的业务逻辑,让视图(Activity、Fragment 等)专注于展示数据和与用户交互。比如在一个新闻应用中,Vie…...

WPS数据分析000007

目录 一、分列 智能分列 出生日期 数值转换 公式不运算 二、数据对比 离职员工 新入职员工 都在职的员工 三、合并计算 四、拆分表格 合并表格 一、分列 智能分列 出生日期 数据求和 文本型数字左对齐&#xff1b;数值型数字右对齐 数值转换 方式一&#xff1a; 方…...

SpringCloud系列教程:微服务的未来(十八)雪崩问题、服务保护方案、Sentinel快速入门

前言 在分布式系统中&#xff0c;雪崩效应&#xff08;Avalanche Effect&#xff09;是一种常见的故障现象&#xff0c;通常发生在系统中某个组件出现故障时&#xff0c;导致其他组件级联失败&#xff0c;最终引发整个系统的崩溃。为了有效应对雪崩效应&#xff0c;服务保护方…...

把markdown转换为pdf的方法

将 Markdown 文件转换为 PDF 有多种方法&#xff0c;以下是几种常见的方式&#xff1a; 1. 使用 VS Code 和 Markdown 插件 VS Code 是一款流行的代码编辑器&#xff0c;支持通过插件将 Markdown 转换为 PDF。 步骤&#xff1a; 安装 VS Code&#xff1a; 下载地址&#xff…...

Controller 层优化四步曲

Controller 层优化四步曲 前言 在开发过程中&#xff0c;Controller 层作为系统与外界交互的桥梁&#xff0c;承担着接收请求、解析参数、调用业务逻辑、处理异常等职责。 然而&#xff0c;随着业务复杂度的增加&#xff0c;Controller 层的代码往往会变得臃肿且难以维护。 …...

Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)

title: ‘Python数据分析:Python语法基础&#xff0c;IPython和Jupyter Notebooks&#xff08;二&#xff09;’ tags: python数据分析 categories:python数据分析 keywords:python数据分析 cover: …/img/404_icecream_whale.png description: 本文介绍python的基础语法和jup…...

Nginx 开发总结

文章目录 1. Nginx 基础概念1-1、什么是 Nginx1-2、Nginx 的工作原理1-3、Nginx 的核心特点1-4、Nginx 的常见应用场景1-5、Nginx 与 Apache 的区别1-6、 Nginx 配置的基本结构1-7、Nginx 常见指令 2. Nginx 配置基础2-1、Nginx 配置文件结构2-2、全局配置 (Global Block)2-3、…...

centos7安装SVN

[rootVM-16-3-centos ~]# yum install subversion -y [rootVM-16-3-centos ~]# svnserve --version // 创建目录 [rootVM-16-3-centos ~]# mkdir -p /opt/svn/repos // 创建新的空版本库&#xff0c;执行后会在repos文件夹下建立多个文件&#xff0c;待修改 [rootVM-16-3-cento…...

LTV预估 | 多视角对比学习框架CMLTV

&#x1f604; cmltv的loss好多哟&#xff0c;花样好多哟&#xff5e; 文章目录 1 精简总结2 背景&挑战3 方法4 实验 ✅【arxiv-2023 华为 CMLTV】《Contrastive Multi-view Framework for Customer Lifetime Value Prediction》 论文链接&#xff1a; https://arxiv.or…...

llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2

llama.cpp LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK2 1. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK22. LLM_ARCH_DEEPSEEK and LLM_ARCH_DEEPSEEK23. struct ggml_cgraph * build_deepseek() and struct ggml_cgraph * build_deepseek2()References 不宜吹捧中国大语言模型的同…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...