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_LOG

cat<<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_REPORT

if LOAD=`uptime 2>> $ERROR_LOG`
then
    echo "<p>$LOAD</p>" >> $HTML_REPORT
else
    echo "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fi

echo "<h2>Disk Usage</h2>" >> $HTML_REPORT
if DISK_USAGE=`df -h 2>> $ERROR_LOG`
then
    echo "<p>$DISK_USAGE</p>" >> $HTML_REPORT
else
    echo "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fi

echo "<h2>Memory Usage</h2>" >> $HTML_REPORT
if MEMORY_USAFE=`free -m 2>> $ERROR_LOG`
then
    echo "<p>$MEMORY_USAFE</p>" >> $HTML_REPORT
else
    echo "<p>Error occurred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fi

echo "<h2>Network Status</h2>" >> $HTML_REPORT
if NETWORK_STATUS=`ifconfig 2>> $ERROR_LOG`
then
    echo "<p>$NETWORK_STATUS</p>" >> $HTML_REPORT
else
    echo "<p>Error occrred. Check $ERROR_LOG</p>" >> $HTML_REPORT
fi


echo "<h2>Nginx Service Status</h2>" >> $HTML_REPORT
if NGINX_STATUS=`systemctl status nginx 2>> $ERROR_LOG`
then
    echo "<p>$NGINX_STATUS</p>" >> $HTML_REPORT
else
    echo "<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 1500
        inet 192.168.5.15  netmask 255.255.240.0  broadcast 192.168.15.255
        inet6 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 0
        TX packets 43600  bytes 7583848 (7.2 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::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 0
        TX 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 server
   Loaded: 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 ago
  Process: 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.9M
   CGroup: /system.slice/nginx.service
           ├─13210 nginx: master process /usr/sbin/nginx
           ├─13211 nginx: worker process
           └─13212 nginx: worker process

Jan 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>

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件工程概论试题一

一、单选 1.下面关于“发布测试”的观点错误的是( )。 A.系统开发团队不应该负责发布测试 B.发布测试是一个确认检查的过程 C.发布测试的目的是让系统供应商确信系统足够好可以使用了 D.发布测试通常采用白盒测试 正答&#xff1a;D 2.下图最有可能是()体系结构风格。 A. C…

iPhone SE(第三代) 设备详情图

目录 产品宣传图内部图——后设备详细信息 产品宣传图 内部图——后 设备详细信息 信息收集于HubWeb.cn

基于物联网设计的疫苗冷链物流监测系统

一、前言 1.1 项目开发背景 随着全球经济的发展和物流行业的不断创新&#xff0c;疫苗和生物制品的运输要求变得越来越高。尤其是疫苗的冷链物流&#xff0c;温度、湿度等环境因素的控制直接关系到疫苗的质量和效力&#xff0c;因此高效、可靠的冷链监控系统显得尤为重要。冷…

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版 补充代…

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一&#xff1a;使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式&#xff0c;设置type加载数据类型 设置线条 鼠标移入改变颜色&#xff0c;设置图层属性&#xff0c;此处是fill-extru…

Linux进程调度与等待:背后的机制与实现

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; 当一个进程发起某种操作&#xff08;如I/O请求、信号、锁的获取等&#xff09;&#xff0c;但该操作需要的资源暂时不可用时&#xff0c;进程会被操作系统挂起&#xff0c;进入“等待队列”或“阻塞状态”。…

低代码系统-产品架构案例介绍、明道云(十一)

明道云HAP-超级应用平台(Hyper Application Platform)&#xff0c;其实就是企业级应用平台&#xff0c;跟微搭类似。 通过自设计底层架构&#xff0c;兼容各种平台&#xff0c;使用低代码做到应用搭建、应用运维。 企业级应用平台最大的特点就是隐藏在冰山下的功能很深&#xf…

DeepSeek大模型技术解析:从架构到应用的全面探索

一、引言 在人工智能领域&#xff0c;大模型的发展日新月异&#xff0c;其中DeepSeek大模型凭借其卓越的性能和广泛的应用场景&#xff0c;迅速成为业界的焦点。本文旨在深入剖析DeepSeek大模型的技术细节&#xff0c;从架构到应用进行全面探索&#xff0c;以期为读者提供一个…

python学opencv|读取图像(四十八)使用cv2.bitwise_xor()函数实现图像按位异或运算

【0】基础定义 按位与运算&#xff1a;两个等长度二进制数上下对齐&#xff0c;全1取1&#xff0c;其余取0。 按位或运算&#xff1a;两个等长度二进制数上下对齐&#xff0c;有1取1&#xff0c;其余取0。 按位取反运算&#xff1a;一个二进制数&#xff0c;0变1,1变0。 按…

DeepSeek辅助学术写作摘要内容

学术摘要写作 摘要是文章的精华&#xff0c;通常在200-250词左右。要包括研究的目的、方法、结果和结论。让AI工具作为某领域内资深的研究专家&#xff0c;编写摘要需要言简意赅&#xff0c;直接概括论文的核心&#xff0c;为读者提供快速了解的窗口。 下面我们使用DeepSeek编…

World Creator地形导入UE

修改导出分辨率1009x1009, 虚幻默认参数的整体分辨率是1009 导出预设选择高度图&#xff08;heigh map&#xff09;格式选择PNG 16位,或者RAW 16位&#xff0c;需要反转y轴&#xff08;与虚幻不同&#xff09;&#xff0c;命名格式会自动带一个 , 将改成_ 或者删掉自己命名 &am…

大数据Hadoop入门3

目录 第五部分&#xff08;Apache Hive DML语句和函数使用&#xff09; 1.课程内容大纲和学习目标 2.Hive SQL-DML-load加载数据操作 3.Hive SQL-DML-insert插入数据 4.Hive SQL-DML-select查询-语法书和环境准备 5.Hive SQL-DML-select查询-列表达式和distinct去重 6.Hi…

WPS数据分析000005

目录 一、数据录入技巧 二、一维表 三、填充柄 向下自动填充 自动填充选项 日期填充 星期自定义 自定义序列 1-10000序列 四、智能填充 五、数据有效性 出错警告 输入信息 下拉列表 六、记录单 七、导入数据 ​编辑 八、查找录入 会员功能 Xlookup函数 VL…

【Redis】hash 类型的介绍和常用命令

1. 介绍 Redis 中存储的 key-value 本身就是哈希表的结构&#xff0c;存储的 value 也可以是一个哈希表的结构 这里每一个 key 对应的一个 哈希类型用 field-value 来表示 2. 常用命令 命令 介绍 时间复杂度 hset key field value 用于设置哈希表 key 中字段 field 的值为…

基于STM32的阿里云智能农业大棚

目录 前言&#xff1a; 项目效果演示&#xff1a; 一、简介 二、硬件需求准备 三、硬件框图 四、CubeMX配置 4.1、按键、蜂鸣器GPIO口配置 4.2、ADC输入配置 4.3、IIC——驱动OLED 4.4、DHT11温湿度读取 4.5、PWM配置——光照灯、水泵、风扇 4.6、串口——esp8266模…

Ollama+DeepSeek本地大模型部署

1、Ollama 官网&#xff1a;https://ollama.com/ Ollama可以干什么&#xff1f; 可以快速在本地部署和管理各种大语言模型&#xff0c;操作命令和dokcer类似。 mac安装ollama&#xff1a; # 安装ollama brew install ollama# 启动ollama服务&#xff08;默认11434端口&#xf…

2025美赛MCM数学建模A题:《石头台阶的“记忆”:如何用数学揭开历史的足迹》(全网最全思路+模型)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 目录 《石头台阶的“记忆”&#xff1a;如何用数学揭开历史的足迹》 ✨摘要✨ ✨引言✨ 1. 引言的结构 2. 撰写步骤 &#xff08;1&#xff09;研究背景 &#…

定西市建筑房屋轮廓数据shp格式gis无偏移坐标(字段有高度和楼层)内容测评

定西市建筑房屋轮廓数据是GIS&#xff08;Geographic Information System&#xff0c;地理信息系统&#xff09;领域的重要资源&#xff0c;用于城市规划、土地管理、环境保护等多个方面。这份2022年的数据集采用shp&#xff08;Shapefile&#xff09;格式&#xff0c;这是一种…

fpga系列 HDL:XILINX Vivado Vitis 高层次综合(HLS) 实现 EBAZ板LED控制(上)

目录 创建工程创建源文件并编写C代码C仿真综合仿真导出RTL CG导出RTL错误处理&#xff1a; 创建工程 创建源文件并编写C代码 创建源文件(Souces下的hlsv.h和hlsv.cpp&#xff0c;Test Bench下的test_hlsv1.cpp)&#xff1a; hlsv1.h #ifndef HLSV1 #define HLSV1 #include &l…

gesp(C++六级)(4)洛谷:B3874:[GESP202309 六级] 小杨的握手问题

gesp(C六级)&#xff08;4&#xff09;洛谷&#xff1a;B3874&#xff1a;[GESP202309 六级] 小杨的握手问题 题目描述 小杨的班级里共有 N N N 名同学&#xff0c;学号从 0 0 0 至 N − 1 N-1 N−1。 某节课上&#xff0c;老师安排全班同学进行一次握手游戏&#xff0c;具…