用python做个简单的监控

今天在看博客园的时候看到一篇文章,忘记是什么地址了,之前我也做过一个类似的监控,不过不好控制。之前的模式是通过内网地址访问相应的php程序,php调用python程序,能捕获到摄像头和屏幕以及声音的功能

效果图:

徐小波,陕西宝鸡,岐山,北京

 

 

 

这次直接采用了计划任务的方式:

采集屏幕和摄像头保存为文件,然后将文件通过邮件发出去,效果:

 

 代码:

import cv2
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
import smtplib
import sys
import pyautogui
import cv2
import os


shexiang = os.path.join(os.path.dirname(sys.argv[0]), 'p1.jpg');
pingmu = os.path.join(os.path.dirname(sys.argv[0]), 'screenshot.png');


# 打开摄像头并拍照
cap = cv2.VideoCapture(0)  # 0 表示打开 PC 的内置摄像头(若参数是视频文件路径则打开视频)
#  按帧读取图片或视频
# ret,frame 是 cap.read() 方法的两个返回值。
# 其中 ret 是布尔值,如果读取帧是正确的则返回 True,如果文件读取到结尾,它的返回值就为 False。
# frame 就是每一帧的图像,是个三维矩阵。
ret, frame = cap.read()  # 按帧读取图片
cv2.imwrite(shexiang, frame)  # 保存图像
cap.release()  # 释放(关闭)摄像头


# 截图
screen_shot = pyautogui.screenshot()
screen_shot.save(pingmu)


sender = 'aabbcc@126.com'  # 发件人
receivers = 'aabbcc@126.com'  # 收件人
pw = 'aasasasasaas'  # 三方客户端登录邮箱授权码
subject = '电脑已启动拍照并发送'  # 邮件主题
text = '您好,您的电脑已开机,并拍摄了如下照片:'  # 邮件正文

msg = MIMEMultipart('mixed')  # 定义含有附件类型的邮件
msg['Subject'] = subject  # 邮件主题
msg['From'] = sender  # 发件人
msg['To'] = receivers  # 收件人
# MIMEText三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
# 构造一个文本邮件对象, plain 原格式输出; html html格式输出
text = MIMEText(text, 'plain', 'utf-8')
msg.attach(text)  # 将文本内容添加到邮件中

for i in (shexiang, pingmu):
    sendImg = open(i, 'rb').read()  # 读取刚才的图片
    img = MIMEImage(sendImg)  # 构造一个图片附件对象
    # 指定下载的文件类型为:附件, 并加上文件名
    img['Content-Disposition'] = 'attachment; filename={}'.format(i)
    msg.attach(img)  # 将附件添加到邮件中

msg_tsr = msg.as_string()  # 将msg对象变为str

# 发送邮件
try:
    smtp = smtplib.SMTP()  # 定义一个SMTP(传输协议)对象
    smtp.connect('smtp.126.com', 25)  # 连接到邮件发送服务器,默认25端口
    smtp.login(sender, pw)  # 使用发件人邮件及授权码登陆
    smtp.sendmail(sender, receivers, msg_tsr)  # 发送邮件
    smtp.quit()  # 关闭邮箱,退出登陆
except Exception as e:
    print('出错了:%s' % (e))
else:
    print('邮件发送成功!')

 编译命令:

pyinstaller -F -w jiankong.py

后面直接将生成的jiankong.exe加入windows计划任务即可

 

参考链接:https://www.cnblogs.com/east4ming/p/17039381.html

posted @ 2023-01-10 18:03  河北大学-徐小波  阅读(152)  评论(0编辑  收藏  举报