首先声明一下:该点子非本人原创,我只是用它在Mac OS X上给出了实现。

需要三个文件,被发布在本人的GitHub上,有需要或想了解的请自行参考。

简单介绍下三个文件分别的作用:

pcMonitor.py--Python程序文件,用于实现开机监控以及强制关机的处理逻辑

com.yanghua.pcMonitorService.plist--Apple Mac OS X对于想要开机启动程序的描述文件。(在windows 上可能称之为开机启动计划)

pcMonitorService.sh--在com.yanghua.pcMonitorService.plist中描述的,需要被直接执行的程序。(系统开机自执行程序不支持直接执行Python脚本,所以通过执行执行该sh脚本,在该sh脚本中间接执行pcMonitor.py脚本)。

实现功能

(1)开机未登录 邮件自动提醒

(2)开机登陆后 邮件自动提醒

(3)回复提醒邮件以“shutdown”,则被开启的Mac 机器会被强制关闭

无论是否连接互联网:

(4)支持开机后,以一定的频率定时截取当前屏幕作为图像日志

备注:这些功能对于个人电脑常被借用、公用来说非常有用,便于个人对自己电脑的使用有即时了解。

原理简介

其实很简单,想要在手机和电脑之间产生交互,需要两个条件:
(1)连接  这个只能依赖于互联网了
(2)通信 通信离不开协议,这里选择的话,双方都可识别的,并且操作简便的,没有比通过邮件来实现更好的选择了。
上面提到了,com.yanghua.pcMonitorService.plist该文件用于使得该监控程序开机自动启动,它会间接执行pcMonitor.py脚本。该脚本被执行之后,将开启一个轮询程序。如果碰巧,它开完机就自动连接上了互联网,那么它将直接给你预留的邮箱中发送邮件,如果没有,在你发送邮件就会产生程序异常,此处异常被直接吞噬,只返回Boolean标示,休眠一段时间,继续发送,直到机器联网发送成功为止。为了达到即时的目的,你可能需要借助手机的某些工具(比如在手机的微信中开启QQ邮箱提醒功能,如果你没有QQ邮箱,那么其它邮件提供商很多也跟运营商进行了合作支持了邮箱与手机号码的绑定,这样在收到邮件的时候就可以支持短信提醒)。
至此发送结束,那么下面会进入接收邮件的侦听模式。当接收到标题为邮件提醒时发送的邮件标题(因为关机指令只需回复提醒邮件),并且邮件内容包含shutdown关键字的时候。将会执行关机命令:
关键代码:
if __name__ == '__main__':init()MAIL_TXT = "the computer has started %s" % time.strftime(' at %c')while True:if send_mail(MAIL_TITLE, MAIL_TXT):breakelse:time.sleep(60)while True:shutdown=receive_mail()if shutdown:shutdown_cmd ="shutdown -h now"print(shutdown_cmd)process=subprocess.Popen(shutdown_cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE)process.wait()else:print("sleep")time.sleep(60)      #sleep 60s

如何使其开机自动启动?

首先,需要编写开机启动程序的描述文件。
请参考: mac os 下设置开机自启动服务
文件需要放到/Library/下(通过快捷键:shift+Command+G):
进入后,有两个相关的文件夹:
主要相关的文件夹就是这两个,但有什么区别呢?
LaunchAgents--存放在开机并登陆之后才会执行的计划任务
LaunchDaemons--存放在开机之后就会执行的计划任务
注:这两个文件夹的区别,也是我上面“实现功能”中的(1)、(2)两点的关键点,这就是取决于你将那个任务描述文件放在哪个文件夹内。
你可以直接将com.yanghua.xxx.plist文件直接拖放至两个文件夹的其中之一。因为该文件夹其实是系统相关的文件,所以需要授予其权限,所以在你拖放过程中可能需要输入密码。
或者,通过在Terminal中,通过cp命令来拷贝文件:
上面同时把其他的两个文件放到/usr/local/文件夹下,他们同样是系统相关文件,需要你在命令前加上“sudo”,同时有可能会要求键入password。
在操作某些系统级别相关的文件夹中的文件时,非超级管理员用户(root用户)可能没有执行权限,而在我们的程序里,我们程序的执行者其实就是当前登陆用户(因为它在用户登陆成功后,以其身份执行),而它肯定不是超级管理员。所以,必须为pcMonitorService.sh文件授予“其他用户可执行的权限”:
至此,大部分任务都完成了,还有一个非常关键的问题。回复的邮件:shutdown,其实只是一个给监控程序执行关机指令的“关键字”,它在程序里,却会真正执行shutdown的shell命令。众所周知,shutdown默认情况下只可以被root用户执行,其他用户是没有权限执行shutdown命令的。
所以需要两个步骤来给予其他用户以shutdown命令的执行权限:
(1)修改sudoers文件,执行命令sudo visudo
进入之后,按“i”进入编辑状态,修改最后一行:
为:
去掉最前面的#号,将users修改为你想执行监控脚本的用户名,比如:yanghua
然后为shutdown设置suid:
以上设置完成之后,基本上大功告成了!
关于代码,你还需要作一些修改,主要是关于pcMonitor中的,因为必须要你自己提供关于邮件地址相关的内容:
#TODO: change the e-mail address which you want to comunicate with monitor
MAIL_LIST   = ["XXXXXX@qq.com"]#TODO: change the smtp/pop3 server which will serve for the monitor
MAIL_HOST   = "smtp.exmail.qq.com"
MAIL_POP    = "pop.exmail.qq.com"#TODO: change the email-addr and pwd which the monitor will use
MAIL_USER   = "xxxx@qq.com"
MAIL_PASS   = "xxxxxxxxxx"
MAIL_FROM   = "xxxx@qq.com"

写在最后

由于很久不使用windows的原因(而且windows上也没有安装Python),所以只是给出了Mac OS X上的实现,其实该实现与所有Free BSD系统的实现都是类似的。只有开机启动程序的实现方式不一样。所以在其他平台只需让该程序开机执行即可。
你会告诉我?如果用户不联网,是不是就没有办法了。就目前来看确实是必须要联网才能实现上面的功能,但该程序只要电脑被开启就会不停地允许直到用户关闭,或者联网,如果某人想做什么操作,在未联网状态下进行,而你想知道,你可以试图获取全局的键盘监听事件、鼠标监听事件,甚至可以以一定频率的截屏来作为日志以进行保存!等到联网时,这些日志都将可以作为邮件自动发送给你(因为普通用户根本不知道你的这些幕后行为)。
最后,还是重申:不要恶意地使用你懂得的东西。否则后果自行负责!

Python实现对电脑的全程监控相关推荐

  1. 网曝某互联网大厂给员工电脑安装插件,基本等于全程监控!网友:就是监控你们划水!...

    不久前字节老板刚刚批评员工上班时间在游戏群里聊天,现在字节员工又爆出公司突然让给电脑安装管理插件,该插件的权限很大,基本上属于全程监控.员工疑惑:难道是因为前几天的游戏群事件?老板发现大家划水严重,要 ...

  2. win7如何设置全程监控电脑运行的程序 win7全程如何监控你电脑方法

    win7如何设置全程监控电脑运行的程序 win7全程如何监控你电脑方法 我们在使用电脑的时候,总是会遇到很多的电脑难题.当我们需要在win7系统中进行监控的时候,应该怎么设置呢?今天我们就可以一起来跟 ...

  3. python实现一个简单的远程监控,看看你老婆微信都在聊啥。

    python实现一个简单的远程监控,看看你老婆微信都在聊啥. 1.pywin32模块检测活动窗口 2.PIL模块截图 3.http.server.socketserver开启一个临时web服务. 4. ...

  4. python开发pc软件_程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  5. python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 如果你真想学习,请评论学过的每篇文章,记录学习的痕迹. 请把所有教程文章中所提及的代码,最少敲写三遍,达到 ...

  6. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  7. python运行速度和电脑配置有关系吗-学python最电脑配置有要求么

    python对于电脑硬件基本没什么要求,下载python安装程序的时候,注意看下自己电脑属性是64位系统还是32位系统,再下载对应的python安装程序. 单纯学Python的话普通电脑就ok了,机器 ...

  8. python+opencv用电脑调用手机摄像头或其他网路摄像头

    python+opencv用电脑调用手机摄像头或其他网路摄像头 文章目录: 1 获取手机摄像头或网络摄像头的ip 1.1 获取手机摄像头的ip 1.2 获取网络摄像头的IP 1.3 关于RTSP协议 ...

  9. pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存

    pyaudio:基于pyaudio利用Python编程从电脑端录制音频保存到指定文件夹+将录音上传服务器+录音进行识别并转为文本保存 目录 输出结果 代码实现 输出结果 代码实现 # -*- codi ...

最新文章

  1. html地图自动适合窗口,【整理】用html和javascript实现类似百度地图的画布
  2. -Git Linux vi/vim 命令 按键 MD
  3. 自训练:超越预训练,展现强大互补特性的上分新范式!
  4. 小汤学编程之JavaScript学习day03——对象、Array数组、String字符、Date日期、JSON
  5. 剑指offer-面试题6.重建二叉树
  6. linux添加后门方法,超初级的linux后门制作方法
  7. iOS开发之五:常用控件--UITextField的使用
  8. Spring-整合JDBC-事务-远程方法调用RMI
  9. Open browser failed!! Please check if you have installed the browser correct
  10. pyqt5 yolov4实现车牌识别系统
  11. 一键进入高通9008模式_想闯中国智能汽车的高通和想花200亿的威马
  12. 谈谈毕业之后的第一份工作的感悟
  13. 2017.10.16队内互测——胡策
  14. 【STC单片机学习】第二课:单片机是什么东西
  15. 安卓psp模拟器联机教程_侠盗猎车手:血战唐人街PSP版模拟器实测 有链接,有联机教程...
  16. 【Bugzilla】我按照bugzilla的官方指导进行的安装。(一)
  17. SDWebImage详细解析
  18. PMO如何选择项目管理工具?
  19. linux企业级应用实战运维和调优资源,Linux企业级应用实战、运维和调优
  20. OEM的意思是什么?(收藏)

热门文章

  1. 王者荣耀官网全皮肤超超超清原皮爬取!!!
  2. 从虚拟化前端Bug学习分析Kernel Dump
  3. IT运维的365天--009微信双开批处理文件运行出错(当前目录无效)的解决
  4. Android 最简单的自定义证件照Mask之一
  5. XSS插入绕过一些方式总结
  6. 17. 进圈 编程练习
  7. 使用八种牛云存储解决方案ios7.1的app部署问题
  8. RN实现仿余额宝余额数字翻滚动画特效
  9. (附源码)spring boot物联网智能管理平台 毕业设计 211120
  10. 四巫日来临本周硅铁、铁矿石领跌,铁矿石认沽最高31倍,钢厂利润回升2022.6.17