远程服务器执行python脚本:一个用python编写的远程关机程序
远程服务器执行python脚本:一个用python编写的远程关机程序******@qq.com # 邮箱 ******** # 关机命令,采用字母 ********** # qq邮箱授权码3)读取txt文件代码import imapclient import os import time import pyzmail import datetime from datetime import date import win32api win32con2)编写一个txt文件,内容如下首先需要python语言学习的基础知识,比如基础的语法、语句等;下面来说咱们用python编写远程关机软件的第一步,用python实现邮件发送功能,要实现邮件发送功能,需要用到pyzmail第三方的邮件库包,这个库包我就不具体介绍了,比python默认带的比默认smtplib和mime模块简单很多简单得多,关于第三方模块包的安装就不在细说了,随
目前市场上流行的远程关机软件有向日葵、蒲公英等,但都需要注册及收费,因为我工作的原因,有时候需要紧急外出,但也不知道什么时间回来,也许特别晚了,这时候我就想到如何实现,远程关机呢。
python语言,目前市场上比较火的一款软件,又因为前段时间,我对python语言进行过简单的学习,所以萌生了用python语言编写一款远程关机的小软件。
说动手就动手,下面简单介绍一下用python编写一款远程关机的小程序,此款软件对于python学习爱好者可以作为参考。
第一步:写代码
首先需要python语言学习的基础知识,比如基础的语法、语句等;
下面来说咱们用python编写远程关机软件的第一步,用python实现邮件发送功能,要实现邮件发送功能,需要用到pyzmail第三方的邮件库包,这个库包我就不具体介绍了,比python默认带的比默认smtplib和mime模块简单很多简单得多,关于第三方模块包的安装就不在细说了,随后写个关于第三方模块包的安装专题,不过提供一个网站可以下载https://pypi.org/project/pywin32/223/。
1)写代码之前,需要先引入几个模块
import imapclient
import os
import time
import pyzmail
import datetime
from datetime import date
import win32api win32con
2)编写一个txt文件,内容如下
******@qq.com # 邮箱
******** # 关机命令,采用字母
********** # qq邮箱授权码
3)读取txt文件代码
try:
while True: # 继续执行循环
Filename = 'set_youxiang.txt'
dt = datetime.datetime.now()
with open(filename) as file_object:
lines = file_object.readlines()
file_object.close()
4)pyzmai邮件读取代码,lines[0]是TXT文件的第一行邮箱名称,lines[2]是TXT文件的第三行邮箱授权码,下面会介绍如何获取邮箱授权码
imapobj = imapclient.IMAPClient('pop.qq.com' ssl=True) # 连接到邮箱服务器
imapobj.login(lines[0].rstrip() lines[2].rstrip()) # 登录到邮箱服务器
imapobj.select_folder('INBOX' readonly=True) # 选择收件箱“邮件”文件夹
UIDs = imapobj.search([u'SINCE' date(dt.year dt.month dt.day)]) # 选择给定日期的邮件
5)读取邮件内容
if len(UIDs) != 0: # 判断读取邮箱内是否有邮件
rawMessages = imapobj.fetch([UIDs[-1]] ['BODY[]' 'FLAGS']) # 读取最后一个邮件
message = pyzmail.PyzMessage.factory(rawMessages[UIDs[-1]][b'BODY[]']) # 读取最后一个邮件的内容
zhu_ti = str(message.get_subject()) # 读取邮件主题
lines[1] = str(lines[1].rstrip()) # txt文件内第二行内容,删除字符串末尾的空格
6)比较TXT文件内设置的关机密码(txt文件内第二行)与邮箱主题内读取内容:
lines[1] = str(lines[1].rstrip()) # txt文件内第二行内容,删除字符串末尾的空格
if zhu_ti.isalpha(): # 判断读取主题内容不为空值
zhu_ti = zhu_ti.lower() # 邮件主题内容转小写,避免比较字符串错误
lines[1] = lines[1].lower() # txt文件内第二行内容,设定关机密码字母转小写,避免比较字符串错误
# print('邮件主题:' zhu_ti)
if zhu_ti == lines[1]: # 比较邮件内主题内容与 txt文件内第二行内容,设定关机密码比较
# print("关机")
imapobj.delete_messages(UIDs[-1]) # 删除电子邮件
imapobj.expunge()
os.system('shutdown -s -t 60') # 执行关机命令
7)执行关机命令,删除关机命令邮件
if zhu_ti == lines[1]: # 比较邮件内主题内容与 txt文件内第二行内容,设定关机密码比较
# print("关机")
imapobj.delete_messages(UIDs[-1]) # 删除电子邮件
imapobj.expunge()
os.system('shutdown -s -t 60') # 执行关机命令
8)断开服务器连接,休眠30秒
imapobj.logout() # 从IMAP服务器断开
time.sleep(30) # 休眠30秒
9)休眠30秒后,继续上面步骤的循环
try:
while True: # 继续执行循环
filename = 'set_youxiang.txt'
dt = datetime.datetime.now()
10)抛出python运行异常,强制退出,无网络,密码错误
except BaseException as e: # 抛出异常
if isinstance(e KeyboardInterrupt): # 强制停止运行
# Ctrl -C停止运行
win32api.MessageBox(0 "Ctrl -C停止运行;" "提醒" win32con.MB_OK)
print('\nDone')
os.exit(1)
elif isinstance(e imapclient.socket.gaierror): # 无网络异常
# 提醒OK消息框
win32api.MessageBox(0 "无网络,请检查网络;" "提醒" win32con.MB_OK)
os.exit(1)
elif isinstance(e FileNotFoundError): # 发送的邮箱授权码密码不正确
win32api.MessageBox(0 "异常,请检查,邮箱与密码是否正确;" "提醒" win32con.MB_OK)
print('\nDone')
os.exit(1)
第二步:设置邮箱授权码
1)打开QQ邮箱
第二步:设置邮箱授权码
1)打开QQ邮箱
2)选择设置
3)打开设置—选择“账户”
4)账户—开启服务POP3/SMTP 需要发送短信验证
5)发送短信验证后记住邮箱授权码,把授权码写在TXT文件内第三行
第三步,远程关机电脑设定
1)打开电脑控制面板—选择电源管理
2)电源管理-选择更改计划
3)使计算机进入睡眠—改为“从不”—保存
第四步,测试
用手机或者电脑—发送邮件,发送到你在TXT文件第一行内设定邮箱内,主题填写TXT文件内第二行内容,邮件正文可以为空,发送邮件即可,随后奇迹出现了