采用的是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点发送



