1、编辑shell脚本

[root@web03 ~/monitor_scripts]# cat inspect.sh
#!/bin/bash # 设置磁盘的阀值
disk_max=90 # 设置监控inode的分区
partition="/dev/sda3" # 设置磁盘inode使用率的阀值
disk_inode_use=90 # 这是mem的阀值
mem_max_use=90 # CPU的空闲程度
cpu_less=10 function disk_space_info() {
disk_used=$(df -h|grep /$|awk '{print $(NF-1)}'|cut -d% -f1)
if [ $disk_used -gt $disk_max ];then
Msg="TIME: $(date +%F-%T)
HostName: $(hostname)
IP: $(hostname -I)
Info: 磁盘使用率超过80%,请及时处理!"
mail $Msg
fi
} function disk_inode_use() {
inode_used=$(df -i /dev/sda3 |tail -1|awk -F'[ %]+' '{print $5}')
if [ $inode_used -gt $disk_inode_use ];then
Msg="TIME: $(date +%F-%T)
HostName: $(hostname)
IP: $(hostname -I)
Info: ${partition}分区inode使用率超过${disk_inode_use}%,请及时处理!"
mail $Msg
fi
} function monitor_mem() {
mem_used=$(free|grep Mem|awk '{printf ($3/$2)*100}'|cut -d. -f1)
if [ $mem_used -gt $mem_max_use ];then
Msg="TIME: $(date +%F-%T)
HostName: $(hostname)
IP: $(hostname -I)
Info: 内存使用率超过${mem_max_use}%,请及时处理!"
mail $Msg
fi
} function monitor_cpu() {
cpu_used=$(vmstat 1 3|awk 'NR>=3{x=x+$(NF-2)} END {printf("%u",x/3)}')
if [ $cpu_used -lt $cpu_less ];then
Msg="TIME: $(date +%F-%T)
HostName: $(hostname)
IP: $(hostname -I)
Info: cpu空闲率小于${cpu_less},请及时处理!"
mail $Msg
fi
} disk_space_info
disk_inode_use
monitor_mem
monitor_cpu

2、编辑python脚本发送邮件

在使用的时候把mail文件授予x权限,再复制到/usr/bin,目录下当作命令执行。

[root@web03 ~/monitor_scripts]# cat mail
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import smtplib
import email.mime.multipart
import email.mime.text server = 'smtp.qq.com' # 邮箱服务器
port = '25' # 邮箱服务器端口 def sendmail(server,port,user,pwd,msg):
smtp = smtplib.SMTP()
smtp.connect(server,port)
smtp.login(user, pwd)
smtp.sendmail(msg['from'], msg['to'], msg.as_string())
smtp.quit()
print('邮件发送成功email has send out !') if __name__ == '__main__':
msg = email.mime.multipart.MIMEMultipart() msg['Subject'] = '系统监控告警邮件' # 邮件标题
msg['From'] = '1402122292@qq.com' # 发送方的邮箱地址
msg['To'] = 'gonglovepj@gmail.com' # 目的邮箱地址 user = '1402122292@qq.com' # 登陆的用户
pwd = 'folgrpnvvjfxjijc' # 授权码 content='%s\n%s' %('\n'.join(sys.argv[1:4]),' '.join(sys.argv[4:])) #格式处理,专门针对我们的邮件格式 txt = email.mime.text.MIMEText(content, _charset='utf-8')
msg.attach(txt) sendmail(server,port,user,pwd,msg)

使用shell+python脚本实现系统监控并发送邮件的更多相关文章

  1. python进行linux系统监控

      python进行linux系统监控 Linux系统下: 静态指标信息: 名称 描述 单位 所在文件 mem_total 内存总容量 KB /proc/meminfo disks 磁盘相关信息 - ...

  2. python对 windows系统监控插件

    在python编程的windows系统监控中,需要监控监控硬件信息需要两个模块:WMI 和 pypiwin32 .

  3. shell脚本实例-系统监控

    shell脚本监控网站并实现邮件.短信报警shell进程监控脚本(发送邮件报警)Shell脚本监控服务器在线状态和邮件报警的方法 http://www.jbxue.com/jb/shell/ 11. ...

  4. 使用python脚本+zabbix前端监控云联网底层TCP数据流所负载的链路质量,并在丢包时联动保存MTR记录

    背景 目前国内各家云联网跨区域数据传输,会将数据流通过哈希运算负载到不同的底层链路上,而底层链路质量差异较大,这种情况导致的现象就是,使用传统的icmp监控线路正常,但是业务一直不稳定,所以才有了使用 ...

  5. Python脚本日志系统

    Python通过logging模块提供日志功能,关于logging模块的使用网络上已经有很多详细的资料,这里要分享的是怎样在实际工程中使用日志功能. 假设要开发一个自动化脚本工具,工程结构如下,Com ...

  6. 【原】Gradle调用shell脚本和python脚本并传参

    最近由于项目自动化构建的需要,研究了下gradle调用脚本并传参的用法,在此作个总结. Pre build.gradle中定义了$jenkinsJobName $jenkinsBuild两个Jenki ...

  7. 计算python脚本的运行时间

    首先说一下我遇到的坑,生产上遇到的问题,我调度Python脚本执行并监控这个进程,python脚本运行时间远远大于python脚本中自己统计的程序执行时间. 监控python脚本执行的时间是36个小时 ...

  8. Linux 服务器系统监控脚本 Shell【转】

    转自: Linux 服务器系统监控脚本 Shell - 今日头条(www.toutiao.com)http://www.toutiao.com/i6373134402163048961/ 本程序在Ce ...

  9. Shell 脚本实现 Linux 系统监控

    一.实验介绍 1.1 实验内容 本课程实现 shell 脚本监控系统的各项参数,并可以将脚本加入系统环境中,可以直接在终端里执行.还添加了几个参数,一个脚本可以执行不同的操作. 1.2 知识点 本实验 ...

随机推荐

  1. 解决“用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示”的问题记录(备忘)

    解决"用PicGo-2.3.0-beta5 + GitHub做博客图床,github仓库图片文件不显示"的问题记录(备忘) 历时几个小时百度,终于靠自己理解解决了GitHub仓库图 ...

  2. 三、python学习-常用模块

    一.常用模块 1.math数学模块 在计算机中,所有数值在计算机底层都是约等于机制,并不是精确地 import math #ceil() 向上取整操作 math.ceil(3.1)=>4 #fl ...

  3. 2020.1 PyCharm 激活

    1 下载安装 平台windows,官网: 选路径后, 选项分别是64位的快捷方式,添加运行目录到环境变量PATH,添加右键菜单"打开文件夹作为一个工程",python文件关联,按需 ...

  4. Ambassador-05-自动重试

    自动重试定义: retry_policy: retry_on: <string> num_retries: <integer> per_try_timeout: <str ...

  5. JAVAEE_Servlet_09_Adapter适配器GenericServlet

    适配器 GenericServlet * 适配器 (Adapter) - 适配器的作用? 1.我们目前所有的Servlet类都直接实现了javax.servlet.Servlet接口,但是该接口中有些 ...

  6. BLUENRG-LP 学习笔记

    在学习 BLUENRG-LP 的过程中,及时地把碰到的问题记录下来,并作解答,形成本文档. 该文档会时时更新,并且当某些章节内容过多时,会独立出来,形成新的文章. BLUENRG-LP 的特性 芯片内 ...

  7. zipfile tarfile模块

    zipfile --- 使用ZIP存档 这个模块提供了创建.读取.写入.添加及列出 ZIP 文件的工具 # 创建一个ZipFile对象, 可使用上下文管理 with class zipfile.Zip ...

  8. 【译】Android NDK API 规范

    [译]Android NDK API 规范 译者按: 修改R代码遇到Lint tool的报错,搜到了这篇文档,aosp仓库地址:Android NDK API Guidelines. 975a589 ...

  9. 【网络协议】 RPC vs Http

  10. UC-Android逆向工程师 面试题1的分析

    1.简介 这个题目是一位吾爱破解的坛友在面试UC的Android逆向工程事时,遇到的题目.此题不难,与阿里移动去年移动安全比赛的题目差不多,题目的验证方式也是查表对比,并且这个表的数据是放在文件中的. ...