2.yagmail发送邮件

yagmail

pip install yagmail

"""
yagmail发送邮件:
1、导入模块
2、使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
3、使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
"""

# 导入模块
import yagmail

# 使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
ya_obj = yagmail.SMTP(user="xxxxxxxx@qq.com", password="xxxxxxxxxxxx", host="smtp.qq.com")

# 使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
content = "你好!yagmail模块测试!"
# send()发送邮件
ya_obj.send("xxxxxxx@qq.com", "yagmail模块测试", content)
{}

系统资源监控-邮件告警

#!/usr/bin/python
# 解析环境配置,如果有虚拟环境使用虚拟环境路径。例: #!/python_venv_manage/python-study/bin/python
# cat yagmail_host_monitor.py
# 导入必要模块
import psutil
import datetime
import yagmail

# 定义一个函数,实现信息的显示和日志的保存
def host_monitor(time):
    # 1、导入模块

    # 2、定义变量保存CPU的使用率
    cpu_per = psutil.cpu_percent(interval=time)

    # 3、定义变量保存内存信息
    memory_info = psutil.virtual_memory()

    # 4、定义变量保存硬盘的信息
    disk_info = psutil.disk_usage("/")

    # 5、定义变量保存网络的信息
    net_info = psutil.net_io_counters()

    # 获取系统当前时间
    current_time = datetime.datetime.now().strftime("%F %T")

    # 6、拼接字符串显示
    log_str = "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "|      监控时间      |  CPU使用率  |   内存使用率  |   硬盘使用率  |          网络收发量          |\n"
    log_str += "|                   | (共%d核CPU)  |  (总计%dG内存) | (总计%dG硬盘)|                            |\n" % (psutil.cpu_count(logical=False), memory_info.total/1024/1024/1024, disk_info.total/1024/1024/1024)
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    log_str += "|%s|    %s%%   |    %s%%    |    %s%%    |   收:%s/发:%s  |\n" % (current_time, cpu_per, memory_info.percent, disk_info.percent, net_info.bytes_recv, net_info.bytes_sent)
    log_str += "|-------------------|------------|-------------|-------------|----------------------------|\n"
    print(log_str)

    # 7、保存监控信息到日志文件
    f = open("log.txt", "a", encoding="UTF-8")
    f.write(log_str + "\n\n")
    f.close()

    # 8、发送邮件告警资源异常
    # 判断资源异常时发送邮件告警
    if cpu_per > 80 or memory_info.percent > 80 or disk_info.percent > 80:
        # 使用yagmail的类创建对象(发件人、发件人授权码、发件的服务器)
        ya_obj = yagmail.SMTP(user="xxxxxxx@qq.com", password="xxxxxxxxxxxxxxx", host="smtp.qq.com")

        # 使用yagmail对象发送邮件(指定收件人、邮件主题、发送的内容)
        ya_obj.send("xxxxxxx@qq.com", "系统资源监控异常告警", log_str)

# 定义一个死循环,每隔一段时间显示一次
def main():
    """程序的入口"""
    while True:
        host_monitor(10)

# __name__值:如果程序所有py文件被其他文件导入,些时__name__指的是些py文件本身名字,如果直接运行py文件,此时__name__值是__main__。
if __name__ == '__main__':
    main()

# python yagmail_host_monitor.py
# chmod u+x yagmail_host_monitor.py; ./yagmail_host_monitor.py