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

shell脚本作业

需求:

shell脚本需求说明:
1、监控系统中的cpu、内存、硬盘、、使用率超过80%进行邮件告警(可使用邮箱163、QQ、139等)
2、监控系统中的IO await大于50进行邮件告警(可使用邮箱163、QQ、139等)
3、监控系统中的网络流量下载上传超过10M(可变)进行邮件告警(可使用邮箱163、QQ、139等)

实例:

#!/bin/bash# 配置参数
THRESHOLD=80        # 阈值%
IO_AWAIT_THRESHOLD=50    # IO await阈值ms
NETWORK_THRESHOLD=100    # 网络流量阈值MB
INTERFACE="ens33"               # 网络接口名,请根据实际情况修改# QQ邮箱配置
SMTP_SERVER="smtp.qq.com"
SMTP_PORT="587"
EMAIL_FROM="2463230702@qq.com"      # 发件人QQ邮箱
EMAIL_PASSWORD="lxgjuprnpolvdhgj"     # QQ邮箱授权码,不是密码
EMAIL="2463230702@qq.com"         # 收件人邮箱# 获取当前时间
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")# 日志文件
LOG_FILE="/var/log/zya.log"# 创建日志目录
mkdir -p $(dirname "$LOG_FILE")# 记录日志函数
log_message() {echo "[$TIMESTAMP] $1" >> "$LOG_FILE"
}# 发送邮件函数
send_alert_email() {local subject="$1"local content="$2"echo -e "Subject: $subject\n\n$message" | \
SMTP_PASSWORD="$SMTP_PASS" msmtp \--from="$SMTP_USER" \--host="$SMTP_SERVER" \--port="$SMTP_PORT" \--auth=on \--user="$SMTP_USER" \--passwordeval="echo \$SMTP_PASSWORD" \--tls=on \--tls-starttls=on \"$EMAIL"if [ $? -eq 0 ]; thenecho "邮件发送成功: $subject"
elseecho "邮件发送失败: $subject"
fi
}# 检查CPU使用率
check_cpu() {local cpu_usage_int=$(printf "%.0f" "$cpu_usage")if [ "$cpu_usage_int" -gt "$THRESHOLD" ]; thensend_alert_email "CPU" "$cpu_usage_int" "CPU使用率过高,请及时处理"return 1elselog_message "CPU使用率正常: ${cpu_usage_int}%"return 0fi
}# 检查内存使用率
check_memory() {local mem_info=$(free | grep Mem)local total_mem=$(echo $mem_info | awk '{print $2}')local used_mem=$(echo $mem_info | awk '{print $3}')local mem_usage=$(awk "BEGIN {printf \"%.2f\", $used_mem/$total_mem*100}")local mem_usage_int=$(printf "%.0f" "$mem_usage")if [ "$mem_usage_int" -gt "$THRESHOLD" ]; thensend_alert_email "内存" "$mem_usage_int" "内存使用率过高,可能需要释放内存或增加内存"return 1elselog_message "内存使用率正常: ${mem_usage_int}%"return 0fi
}# 检查磁盘使用率
check_disk() {local disk_usage=$(df -h / | grep / | awk '{print $5}' | sed 's/%//g')if [ $disk_usage -ge $THRESHOLD ]; thenlocal subject="磁盘使用率告警"local message="根目录磁盘使用率过高: $disk_usage%,超过阈值$THRESHOLD%。\n时间: $(date)"send_alert "$subject" "$message"echo "磁盘告警已发送: $disk_usage%"fi
}# 检查IO await
check_io_await() {local io_await=$(iostat -x 1 2 | awk '/^avg-cpu/ {getline; getline; print $10}' | tail -n1)local io_await_int=$(printf "%.0f" "$io_await")if [ "$io_await_int" -ge "$IO_AWAIT_THRESHOLD" ]; thenlocal message="IO await过高: ${io_await_int}ms (阈值: ${IO_AWAIT_THRESHOLD}ms)"log_message "警告: $message"send_alert_email "IO await告警 - $TIMESTAMP" "$message\n服务器: $(hostname)"fi
}# 检查网络流量
check_network() {local interface=$(ip route | grep default | awk '{print $5}' | head -n1)local rx_bytes_prev=$(cat /sys/class/net/$interface/statistics/rx_bytes 2>/dev/null)local tx_bytes_prev=$(cat /sys/class/net/$interface/statistics/tx_bytes 2>/dev/null)sleep 1local rx_bytes_next=$(cat /sys/class/net/$interface/statistics/rx_bytes 2>/dev/null)local tx_bytes_next=$(cat /sys/class/net/$interface/statistics/tx_bytes 2>/dev/null)local rx_speed=$(echo "scale=2; ($rx_bytes_next - $rx_bytes_prev) / 1024 / 1024" | bc)local tx_speed=$(echo "scale=2; ($tx_bytes_next - $tx_bytes_prev) / 1024 / 1024" | bc)if [ $(echo "$rx_speed > $NETWORK_THRESHOLD" | bc) -eq 1 ]; thenlocal message="网络下载流量过高: ${rx_speed}MB/s (阈值: ${NETWORK_THRESHOLD}MB/s)"log_message "警告: $message"send_alert_email "网络流量告警 - $TIMESTAMP" "$message\n接口: $interface\n服务器: $(hostname)"fiif [ $(echo "$tx_speed > $NETWORK_THRESHOLD" | bc) -eq 1 ]; thenlocal message="网络上载流量过高: ${tx_speed}MB/s (阈值: ${NETWORK_THRESHOLD}MB/s)"log_message "警告: $message"send_alert_email "网络流量告警 - $TIMESTAMP" "$message\n接口: $interface\n服务器: $(hostname)"fi
}# 主监控函数
main_monitor() {log_message "开始系统监控检查..."check_cpucheck_memorycheck_diskcheck_io_awaitcheck_networklog_message "系统监控检查完成"
}# 执行监控
main_monitor
echo "监控检查完成:$(date)"

问题:

一、 MSMTP邮件安装与配置:

我将帮您创建MSMTP配置文件。以下是配置步骤和说明:

1. 创建配置文件

使用以下命令创建并编辑配置文件:

sudo yum install msmtp
nano ~/.msmtprc
2. 配置文件内容

将以下内容复制到文件中(请替换为您的实际信息):

# 默认账户配置
account default# QQ邮箱SMTP服务器设置
host smtp.qq.com
port 587# 发件人邮箱地址
from your-qq@qq.com# 认证设置
auth on
user your-qq@qq.com
password your-authorization-code# TLS加密设置
tls on
tls_starttls on# 日志文件(可选)
logfile ~/.msmtp.log
3. 重要说明
需要修改的参数:
  • your-qq@qq.com → 您的QQ邮箱地址
  • your-authorization-code授权码(不是QQ密码)
获取授权码步骤:
  1. 登录QQ邮箱网页版
  2. 进入"设置" → “账户”
  3. 开启"POP3/SMTP服务"
  4. 按照提示获取授权码
4. 设置文件权限

为了保护您的密码安全,需要设置正确的文件权限:

chmod 600 ~/.msmtprc
5. 测试配置

使用以下命令测试配置是否正常工作:

echo "Test message" | msmtp -a default recipient@example.com
可选的高级配置

如果您需要更多自定义选项,可以添加以下配置:

# 超时设置
timeout 30# 域名(通常不需要修改)
domain localhost# 邮件格式
auto_from on
maildomain qq.com

这样就完成了MSMTP的配置。您现在可以使用msmtp通过QQ邮箱发送邮件了。


文章转载自:

http://EMetqHdW.dbdmr.cn
http://I3JJNpZD.dbdmr.cn
http://kIuiNNKP.dbdmr.cn
http://PEmcdi6Z.dbdmr.cn
http://NdDZUMT4.dbdmr.cn
http://Ry1oocfB.dbdmr.cn
http://lMVRQXUD.dbdmr.cn
http://JjUyf7Bv.dbdmr.cn
http://R9YkeAJ3.dbdmr.cn
http://sxmoOy2o.dbdmr.cn
http://CiSLiCdI.dbdmr.cn
http://L7Qo4B6d.dbdmr.cn
http://Mo4Jnpqq.dbdmr.cn
http://iRDME7UB.dbdmr.cn
http://rKeZL2Zg.dbdmr.cn
http://JUVZ1gEP.dbdmr.cn
http://BsFTrL4p.dbdmr.cn
http://0KpRNDoK.dbdmr.cn
http://fjYEDpN8.dbdmr.cn
http://oE7ZMwh8.dbdmr.cn
http://lf9EeJZL.dbdmr.cn
http://nmoRogNt.dbdmr.cn
http://WQsGkh6e.dbdmr.cn
http://Vqye7ClF.dbdmr.cn
http://zDKPmc6F.dbdmr.cn
http://8Rxu6X0U.dbdmr.cn
http://BSq1yMG2.dbdmr.cn
http://b9G1c9Ob.dbdmr.cn
http://xN1uA6Nv.dbdmr.cn
http://lM2gwd6C.dbdmr.cn
http://www.dtcms.com/a/371075.html

相关文章:

  • 【HEMCO Reference Guide 参考指南第一期】基础示例(Basic examples)
  • 【最新版播放器】完美解码播放器,PureCodec中文播放器,免费使用
  • (论文速读)视觉语言模型评价中具有挑战性的选择题的自动生成
  • 可重复读 是否“100%”地解决幻读?
  • 数据结构与算法1 第一章 绪论
  • Unity的UGUI更改背景以及添加中文字体
  • Linux网络接口命名详解:从eth0到ens33
  • C++零基础第四天:顺序、选择与循环结构详解
  • 南科大适应、协同与规划的完美融合!P³:迈向多功能的具身智能体
  • 机床夹具设计 +选型
  • 【开题答辩全过程】以 “爱心”家政管理系统为例,包含答辩的问题和答案
  • LCR 175. 计算二叉树的深度【简单】
  • SPI 三剑客:Java、Spring、Dubbo SPI 深度解析与实践​
  • 人工智能辅助荧光浓度检测系统:基于YOLO与RGB分析的Python实现
  • Netty从0到1系列之EventLoopGroup
  • 简说【高斯随机场 (GRF)】
  • 【黑客技术零基础入门】2W字零基础小白黑客学习路线,知识体系(附学习路线图)
  • Altium Designer(AD24)集成开发环境简介
  • C++协程理解
  • 【科研成果速递-IJGIS】如何描述与分类移动对象的时空模式?一个新的分类框架与体系!
  • idf--esp32的看门狗menuconfig
  • 「数据获取」《中国电力统计年鉴》(1993-2024)(含中国电力年鉴)
  • [光学原理与应用-435]:晶体光学 - 晶体的结构-基元/原胞/晶胞/点阵
  • 郭平《常变与长青》读书笔记(第三章)
  • C++_哈希
  • 【LeetCode 热题 100】49. 字母异位词分组
  • Vue3中Vite的介绍与应用
  • 【C++ 11 模板类】tuple 元组
  • 高维前缀和
  • 脑电数据预处理十四:主成分分析(PCA)用于伪迹去除与降维