shell脚本

vim jk.sh  #命名脚本名
 

#!/bin/bash

time=`date "+%Y-%m-%d %H:%M:%S"`      #定义时间

echo "$time"

echo  "     警告!!!!!!"

 

cpu_info(){

cpu_free=`top -i -c -bn 1| grep Cpu | awk -F ":" '{print $2}' | awk -F "," '{print $4}' | awk -F " " '{print $1}'| awk -F "." '{print $1}'`  #取cpu空闲值

echo "cpu剩余量:" $cpu_free"%"

}

 

mem_info(){

mem_used=` free -h | grep Mem | awk -F ":" '{print $2}' | awk -F " " '{print $6}'`   #取可用内存值

echo "---mem:"

echo "可用内存为:"$mem_used

}

 

disk_info(){

disk_total=`df -h | grep root | awk -F " " '{print $2}'`          #取磁盘总量

disk_used=`df -h | grep root | awk -F " " '{print $3}'`         #取磁盘使用量

disk_per=`df -h | grep root | awk -F " " '{print $5}'`        #取磁盘使用量率

echo "---disk:"

echo "磁盘总量:"$disk_total

echo "磁盘使用量:"$disk_used

echo "磁盘使用率:"$disk_per

}

 

cpu=`top -i -c -bn 1| grep Cpu | awk -F ":" '{print $2}' | awk -F "," '{print $4}' | awk -F " " '{print $1}'| awk -F "." '{print $1}'`

mem=` free -m | grep Mem | awk -F ":" '{print $2}' | awk -F " " '{print $6}'|sed s/M//g`  #把使用内存中的去M掉便于比较

disk=`df -h | grep root | awk -F " " '{print $5}'|sed s/%//g`   #把硬盘使用率中的百分号去掉便于比较

war_cpu=10   #定义cpu阈值值   

war_mem=100 #定义可用内存阈值100M

war_disk=90   #定义磁盘使用率阈值

 

main(){

if [ "$cpu" -lt $war_cpu  ] || [ "$mem" -lt $war_mem ] ||[ "$disk" -gt $war_disk ]  

#cpu剩余空间小于10   可用内存小于100M  磁盘使用率大于90

then

echo "---cpu:"  

cpu_info

mem_info

disk_info

echo ".........等待处理........."

 

else

echo "-------------"

echo "Server's fine"

echo "-------------"

 

fi

}

main
 
                                                                                  

用python实现发邮件

#导入模块
import paramiko
import smtplib
from email.mime.text import MIMEText
from email.header import Header
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) def send_mail(message):
sender = 'aa1052995312@163.com'
receiver = ['ruri9999@163.com']
subject = '报警'
username = 'aa1052995312@163.com'
password = '123456'
msg = MIMEText(message, 'plain', 'utf-8')
msg['Subject'] = Header(subject, 'utf-8')
msg['From'] = 'warning<aa1052995312@163.com>'
msg['To'] = "ruri9999@163.com"
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit() def server():
ssh.connect("192.168.88.31", 22, 'root', '123', timeout=3) #连接192.168.88.31 端口22 用户root 密码123
stdin, stdout, stderr = ssh.exec_command('./jk.sh ' ) #在linux中执行./jk.sh
msg = stdout.read().decode('utf_8')
war = "警告"
while True:
if war in msg:
send_mail(msg)
print('发送成功!!!')
break
else:
print("server's find.")
break
server()
 
 

简单监控liunx中cpu、内存、磁盘及发送邮件参考的更多相关文章

  1. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  2. AIX/Linux/HP-UX查看CPU/内存/磁盘/存储命令

    1.1    硬件环境验证方式 硬件环境主要包括CPU.内存.磁盘/存储.网络设备(如F5等).系统特有设备(如密押设备等)等,其中网络设备和系统特有设备由网络管理员或项目组提供为准,本节主要关注CP ...

  3. 你需要简单了解JVM中的内存长什么样子

    下面有关JVM内存,说法错误的是? 1.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的 2.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接 ...

  4. linux系统CPU内存磁盘监控发送邮件脚本

    #!/bin/bashexport PATHexport LANG=zh_CN.UTF-8###top之后输入数字1,可以查看每颗CPU的情况.###先配置好mailx邮箱账号密码:#cat>/ ...

  5. python监控CPU/内存/磁盘,超过指定百分比,发送邮件

    #!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): ...

  6. python glances来监控linux服务器CPU 内存 IO使用

    什么是 Glances? Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 curses 开发的跨平台命令行系统监视工具. 通过 Glances,我们可以监视 ...

  7. Shell采集系统cpu 内存 磁盘 网络信息

    cpu信息采集 cpu使用率 采集算法 通过/proc/stat文件采集并计算CPU总使用率或者单个核使用率.以cpu0为例,算法如下: 1. cat /proc/stat | grep ‘cpu0’ ...

  8. 获取并检查系统负载\CPU\内存\磁盘\网络

    安装依赖 需要net-tools.namp! CentOS:yum -y install net-tools nmap Ubuntu:apt-get update && apt-get ...

  9. 用python监控Linux,CPU,内存,硬盘

    #!/usr/local/bin/python3.5 #coding:utf-8 import mailll, linecache, re, socket, os, time hostname = s ...

随机推荐

  1. 【对线面试官】Java注解

    public void send(String userName) {  try {    // qps 上报    qps(params);    long startTime = System.c ...

  2. python初学者-代码规范

    一.编程规范 1.缩进(代码块) 类定义.函数定义.选择结构.循环结构.with块.行尾的冒号表示缩进的开始. python程序是依靠代码块的缩进来体现代码之间的逻辑关系,缩进结束就表示一个代码块结束 ...

  3. 拥抱 C/C++ : Android JNI 的使用

    编译工具 CMake 以及 Android 上 JNI 的使用介绍. 编译工具 CMake 在Android Studio 2.2 之后,工具中增加了 CMake 的支持,于是我们有两种选择来编译 c ...

  4. Windows 64位下安装Redis 以及 可视化工具Redis Desktop Manager的安装和使用

    二.下载Windows版本的Redis 由于现在官网上只提供Linux版本的下载,所以我们只能在Github上下载Windows版本的Redis Windows版本的Redis下载地址:https:/ ...

  5. [leetcode]138. Copy List with Random Pointer复制带有随机指针的链表

    public RandomListNode copyRandomList(RandomListNode head) { /* 深复制,就是不能只是复制原链表变量,而是做一个和原来链表一模一样的新链表, ...

  6. 设置Safari禁止访问某个网站

    经过调查有三种方法可以做到:1,创立新的登录账户,然后进行家长控制:2,安装第三方的应用软件Self Control:3,其他方式 推荐大家使用下面的这个方式:三步即可 1:打开访达(Finder), ...

  7. Python获取网页html代码

    获取网页html代码: import requests res = requests.get('https://www.cnblogs.com/easyidea/p/10214559.html') r ...

  8. 页面中嵌套iframe,微信浏览器长按二维码识别不了

    问题:在微信浏览器内,页面中嵌套iframe,iframe中用户触发事件后有个弹框会显示二维码,用户长按二维码可以识别并跳转.尝试了一下,安卓是正常的,但是ios是识别不了的. 解决过程: 1.这里客 ...

  9. Ubuntu+KVM显卡透传

    好久没有更新微博了,最近有点忙,大家见谅啊!今天带来的是我前段时间做的东西,也就是在 Ubuntu下做KVM虚拟机显科透传.(最近人有点懒,其实有几次是有时间更新的,但是就是懒得动,唉!得保持清醒不能 ...

  10. execute,executeQuery,executeUpdate的区别是什么?

    a.Statement的execute(String query)方法用来执行任意的SQL查询,如果查询的结果是一个ResultSet,这个方法就返回true.如果结果不是ResultSet,比如in ...