Python实现对电脑的全程监控

简介:

首先声明一下:该点子非本人原创,我只是用它在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):
            break
        else:
            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

如何使其开机自动启动?

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



原文发布时间为:2013-02-07

本文作者:vinoYang

本文来自云栖社区合作伙伴 CSDN博客,了解相关信息可以关注CSDN博客。
目录
相关文章
|
2月前
|
监控 Python
使用Python编写的电脑上网时间控制软件:实现家长监管功能
在当今数字化时代,孩子们对互联网的依赖程度越来越高,但是过度使用互联网可能会对他们的健康和学业产生负面影响。为了帮助家长有效地监管孩子们的上网行为,我们开发了一款基于Python的电脑上网时间控制软件,具有家长监管功能。
164 1
|
5月前
|
监控 Java 数据处理
局域网监控的并发处理Python代码
处理局域网监控的并发代码可能涉及到很多方面,包括网络通信、数据处理、并发控制等。本文提供一个简单的Python示例。
469 0
|
5月前
|
监控 Linux iOS开发
电脑优盘监控的Python代码示例
电脑优盘监控的代码示例通常需要涉及操作系统的文件系统和USB设备监控。以下是一个基本的Python示例,用于检测USB设备的插入和拔出
493 0
|
17天前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
1月前
|
JSON 数据格式 Python
优秀!Python版按键精灵,电脑鼠标、键盘手势动作一键复制操作,优雅极了!
优秀!Python版按键精灵,电脑鼠标、键盘手势动作一键复制操作,优雅极了!
|
1月前
|
存储 Linux iOS开发
使用Python自动修改电脑的静态IP地址
使用Python自动修改电脑的静态IP地址
24 0
|
1月前
|
JSON 监控 数据安全/隐私保护
如何利用Python编写公司计算机监控软件的基本功能
在现代企业环境中,监控公司计算机的活动是至关重要的。它可以帮助企业保护数据安全、确保员工遵守公司政策以及提高整体网络性能。为了实现这一目标,我们可以利用Python编写一个简单而强大的公司计算机监控软件,来跟踪关键活动并自动处理收集到的数据。
102 2
|
2月前
|
监控 Python Windows
使用python脚本来监控进程
使用python脚本来监控进程
|
2月前
|
弹性计算 监控 Python
有趣的python脚本【监控公司出口ip变化并发送至钉钉群】
因为公司出口ip是动态的(拨号方式),重新拨号后就会变化。因此及时发现ip变化显得尤为重要(比如及时ecs安全组中的ip),另外可把py脚本打包成exe并加到办公电脑的计划任务里。
33 2
有趣的python脚本【监控公司出口ip变化并发送至钉钉群】
|
2月前
|
监控 测试技术 API
自动化测试工具与电脑桌面监控软件的集成:Selenium与Python的无缝整合
在当今数字化时代,软件质量保证是每个软件开发团队都必须面对的重要挑战之一。自动化测试工具和电脑桌面监控软件的结合,为开发团队提供了一种有效的方式来确保软件的稳定性和性能。本文将介绍如何利用Python编程语言中的Selenium库,与桌面监控软件进行无缝整合,以实现对应用程序的自动化测试和桌面监控。
184 5

热门文章

最新文章