python发邮件实现Redis通知功能

# -*- coding:utf-8 -*-
import smtplib
#import os
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
#from email import encoders
user = 'ccccfz@163.com'
pwd = 'fz.19921218'
to = ['1980884174@qq.com']
msg = MIMEMultipart()
msg['Subject'] = 'Redis内存超标警报'
content1 = MIMEText('服务器内存已超过预设最大内存', 'plain', 'utf-8')
msg.attach(content1)
#-----------------------------------------------------------
s = smtplib.SMTP('smtp.163.com')
s.login(user, pwd)
s.sendmail(user, to, msg.as_string())
print('发送邮件成功')
s.close()
#! /bin/bash
PATH=/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
export $PATH
port=
mem_target=0.005
maxmemory=$(redis-cli -p $port config get maxmemory | awk 'NR==2 {print $1}')
used_memory=$(redis-cli -p $port info memory | grep used_memory: | cut -d: -f2 )
mem_ratio=$(awk 'BEGIN {printf("%.4f",'$used_memory'/'$maxmemory')}')
]
then
/root/Documents/Python-/python /root/Downloads/send_mail.py
fi
在Redis服务器上进行脚本监控。如果监控超过阈值,则请求JAVA程序代发邮件。
Shell脚本确实写着费劲
它还居然没有浮点运算
有两个方式可以实现浮点运算。
1.$(awk 'BEGIN {printf("%.2f",'$used_memory'/'$maxmemory')}')
2.$(echo "scale=2;$mem_ratio>$mem_target" | bc)
另外需要注意的是,top命令的结果默认是乱码,不能使用awk运算
使用top -b 参数就可以解决这个问题了


python发邮件实现Redis通知功能的更多相关文章
- python发邮件遇到的端口号问题
在学习使用python发邮件的过程中, 遇到了一个问题:由于测试的时候使用的是QQ邮箱,要求必须使用SSL/TLS加密,所以有了下面的代码, from email.mime.text import M ...
- 使用python发邮件
使用python发邮件 网上有很多发邮件的例子,本人在网上找了一份,稍加修改后使用 上源码 # encoding=utf-8 from email.mime.image import MIMEImag ...
- 如何用python发邮件
python发送各类邮件的主要方法 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1.smtplib模块 smtplib.SM ...
- Python 发邮件例子
Python 发邮件例子 例子 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2019-04-23 16:12:33 # @Autho ...
- [转]简单三步,用 Python 发邮件
https://zhuanlan.zhihu.com/p/24180606 0. 前言 发送电子邮件是个很常见的开发需求.比如你写了个监控天气的脚本,发现第二天要下雨,或者网站上关注的某个商品降价了, ...
- Python—发邮件总结
来自: http://my.oschina.net/jhao104/blog/613774 1.登录SMTP服务器 首先使用网上的方法(这里使用163邮箱,smtp.163.com是smtp服务器地址 ...
- 对于a标签点击之后可以发邮件和打电话的功能实现
<ul> <li><i class="phone"></i><a href="tel:021-69976089&qu ...
- 用python发邮件实例
发QQ邮件 首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启. from email.header import Header from email.mime.text ...
- 人生苦短之Python发邮件
#coding=utf-8 import smtplib from email.mime.base import MIMEBase from email.mime.image import MIMEI ...
随机推荐
- 关于spring boot jar包与war包的问题
此文为转载:http://mrlee23.iteye.com/blog/2047968 在开发调试完成之后,可以将应用打成JAR包的形式,在Eclipse中可以直接使用Maven插件的package命 ...
- java多线程详解(1)-多线程入门
一.多线程的概念 线程概念 线程就是程序中单独顺序的流控制. 线程本身不能运行,它只能用于程序中. 说明:线程是程序内的顺序控制流,只能使用分配给程序的资源和环境. 进程:操作系统中执行的程序 程序是 ...
- IP首部校验和计算
根据RFC1071文档的计算方法,编写代码实现IP首部校验和的计算 计算步骤: 1.首先将IP首部中校验和字段置0 2.将IP首部每16bit进行相加,如果有进位产生,则将进位加到最低位. 3.将计算 ...
- lua闭合函数
function count( ... ) return function( ... ) i = i+ return i end end local func = count(...) print(f ...
- ITextSharp导出PDF表格和图片(C#)
文章主要介绍使用ITextSharp导出PDF表格和图片的简单操作说明,以下为ITextSharp.dll下载链接 分享链接:http://pan.baidu.com/s/1nuc6glj 密码:3g ...
- android studio怎么分享项目到Git@OSC托管
鄙人初次发表,如有不妥之处,敬请批评指正 1,安装git. git下载地址:http://git-scm.com/downloads/ 2,在AS 的File->Settings->Ver ...
- io流(详询请加qq:2085920154)
import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ioTest ...
- whoami与who am i
whoami显示的是当前“操作用户”的用户名,而who am i显示的是“登录用户”的用户名. 若你使用root用户登录,中间su abc切换,whoami的结果是abc,who am i 的结果是r ...
- sql报句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))
是由于数据库连接资源被耗尽或者用完没被释放导致的. 我在字符串中加了启用连接池好了. 如果错误信息为:sql 无效操作.连接被关闭 也是这个问题导致的.
- IIS配置excel 权限
http://www.cnblogs.com/zhuxiaohui/archive/2013/10/16/3371637.html