用python实现开机自启动的远程关机脚本

  • 2019 年 10 月 8 日
  • 筆記

其实这个之前有写过,但是这次优化了一下,代码的量更少,并且加入一个开机自启动脚本。


用python做关机操作其实很简单,目的为了让python关机,

python的关机语句有:

import os
os.system("shutdown -s -t 10")

这个就是关机语句,第四个参数是时间,然后你就可以写一个脚本去执行这个语句就可以了。既你发出一个关机的指令,然后电脑判断出这个指令然后执行相应的代码。

这里我使用的是用邮件去传入执行关机的命令,你也可以使用微信,一样的道理,不过微信比邮件的步骤少,一样脚本开机自动运行,然后登录网页版微信,第一次有登录扫码后,下一次就不用了。然后电脑开机,在手机点击微信登录,然后就可以了,然后选择接受信息的地方,如果接收到一个微信消息是关机的话,电脑就关机,这样看来需要两个微信号和两部手机,所以微信关机还是比邮件关机麻烦一点的,不过还是可以操作的。

使用邮件需要首先获取邮件的授权码,在这里有详细做法Python—利用邮件控制电脑关机,实现远程关机需要两个邮箱来操作,一个是发送关机指令的邮箱,一个是接收指令的邮箱:

完整代码如下:

import time  import os,sys  from imapclient import IMAPClient  import pyzmail    def getemail():      getemailname = '接收邮件的邮箱'      password = '接收邮件的邮箱的授权码'      try:          myemail = imapobj = IMAPClient('imap.qq.com', ssl=True)          myemail.login(getemailname,password)      except:          return 0      myemail.select_folder('INBOX', readonly=False)      UIDS = []      UIDS = myemail.search(['UNSEEN'])      rawmesage = myemail.fetch(UIDS, ['BODY[]'])      for uid in UIDS:          message = pyzmail.PyzMessage.factory(rawmesage[uid][b'BODY[]'])          if message.get_subject().startswith('邮件的主题'):              link = message.text_part.get_payload().decode(message.text_part.charset)              imapobj.delete_messages(uid)              subject = message.get_subject().encode('UTF-8')              subject1 = subject.decode()              if link == "关机":                  os.system("shutdown -s -t 10")      myemail.expunge()      myemail.logout()    if __name__=='__main__':      count = 0      while count<20:          num = getemail()          if num == 0:              time.sleep(10)              count_=1          else:              continue

写代码的时候唯一一个坑,在安装pyzmail的时候,需要安装的是pyzmail36,即pip install pyzmail36 然后使用的时候还是依旧import pyzmail。

其他的代码细节可在这里查看Python—利用邮件控制电脑关机,因为没有做发送邮件来做反馈的,所以这个的代码量少很多。

这里主要的重点是让脚本开机自启动。

第一步将你脚本文件名修改后缀为.pyw。

第二步右键此电脑->管理 —>任务计划程序—>任务计划程序库,在右边哪里创建任务。

然后随便输入名称,接着点击触发器,新建,将开始任务设定为登录时,确认

接着打开操作,新建,点击浏览找到你的脚本文件,确认

一般这样就可以,然后重启计算机就可以看到任务管理器进程那里有个python和python32,这样就表示成功,然后你就可以发送邮件测试一下关机了。

一般这个邮件关机脚本运行一段时间后会突然报错,主要是邮箱不让你登录的原因,登录太多次,你可以加个延时登录,这样可以增强脚本的运行时间,再加上一些结束发送个邮件给另一个邮箱的功能,或者开机发送一个开机的邮件的功能,这样会使你的的脚本更加方便的去使用,出错也知道在哪一部分有问题。