栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

docker 定时发送邮件 采集虚拟机信息

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker 定时发送邮件 采集虚拟机信息

采用的是QQ邮箱  

#coding=utf-8

import os

import time

import re

import socket

from email.mime.text import MIMEText

from email.header import Header

import smtplib

import psutil  # python -m pip install --upgrade pip -i https://pypi.douban.com/simple

#保存所有和本地计算机建立连接的IP信息到文件中

def netstat_write(filename):

    # 通过os模块打开终端,并且运行一个终端命令,netstat -an命令能看到所有和本地计算机建立连接的IP

    querys = os.popen('netstat -an').read()

    # 打开一个实体文件,通过w写入的方式将终端命令执行的结果写入filename文件中

    with open(filename, 'w') as fs:

        fs.write(querys)



#筛选链接的ip和端口号

def netstat_read(filename):

    remotes = []

    # 打开一个实体文件,通过读取的方式读取终端命令执行的结果

    with open(filename, 'r') as fs:

        querys = fs.read()

        #255.255.255:433

        #201.255.255:433

        #1.255.255:433

        result = re.findall('(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d).(25[0-5]|2[0-4]d|[0-1]d{2}|[1-9]?d):(443)', querys)

        for tmp in result:

            remotes.append('.'.join(tmp[0:-1]) + ':{}'.format(tmp[-1]))

    return remotes


def get_ip():

    #创建通信需要的套接字

    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    s.connect(('8.8.8.8', 80))

    ip = s.getsockname()[0]  # 获取当前ip地址

    # wdf = os.popen('tasklist').read()  # 得到当前物理机运行的任务列表

    wdf = os.popen('ps -ef').read()

    timsd = time.strftime('%Y-%m-%d', time.localtime(time.time()))

    return ip, wdf, timsd


def get_psutil():

    cput = psutil.cpu_times()  # 统计CPU的用户/系统/空闲时间

    cp = psutil.disk_io_counters()  # 磁盘IO

    return cput, cp


def send_email_smtp(content):

    host_name = 'smtp.qq.com'

    port = 465

    sender = '1160394417@qq.com'

    receiver = '1160394417@qq.com'
    #授权码

    password = 'lbklzjcanuyiff'

    msg = MIMEText(content)  # 邮件主体

    # msg['From'] = Header(sender, 'utf-8')

    # msg['TO'] = Header(receiver, 'utf-8')

    msg['From'] = sender

    msg['TO'] = receiver

    msg['subject'] = Header('实时监控报告', 'utf-8')

    try:

        smtp = smtplib.SMTP_SSL(host_name, port)

        smtp.login(sender, password)

        smtp.sendmail(sender, receiver, msg.as_string())

        smtp.quit()

        print('[+]发送出')

    except Exception as err:

        print('[-]发送失败,原因:', err)


if __name__ == '__main__':

    netstat_write(filename='./netstat.txt')

    remotes = netstat_read(filename='./netstat.txt')

    ip, wdf, timsd = get_ip()

    cput, cp = get_psutil()

    content = '[+]查询远程连接的IP地址: {}n' 

               '[+]本地IP:{}n' 

               '[+]在后台运行的程序:{}n' 

               '[+]统计CPU的用户/系统/空闲时间:{}n' 

               '[+]磁盘 I/O 使用情况:{}n' 

               '[+]上次发送时间:{}n'.format(remotes, ip, wdf, cput, cp, timsd)

    print(content)

    #将系统信息发送到邮箱

    send_email_smtp(content=content)

1、把以上的代码编写好   把py文件上传到虚拟机

同级目录下创建

2、requirements.txt 里面   增加

psutil

3、创建Dockerfile

FROM python:3.5  #版本
ADD . /python    #包名
WORKDIR /python   #包名
RUN pip install -r requirements.txt  
CMD ["python", "lbh.py"]  #py 文件

4、打包镜像

docker build -t hh:v1 .
#               hh镜像名  v1版本号   . 当前目录

5、docker images  查看镜像是否创建成功

6、docker  run 镜像ip      启动 docker

7、设置定时

 crontab -e

00 20 * * *  docker   run 6767e6e90344

每天20点发送   

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950343.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号