前言
最近經常需要簡單地遠端控制一下電腦,比如遠端檢視一下電腦上模型訓練的情況,模型訓練完之後遠端關閉電腦等等,于是就想着利用python來簡單地實作一下這些功能,直接利用郵件遠端控制自己電腦。
讓我們愉快地開始吧~
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5CN1YWZkNDOzkDNiJjZkZWN3IWNyQWYhRWNmBzM3czNx8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
開發工具
Python版本:3.6.4
相關子產品:
PIL子產品;
email子產品;
以及一些Python自帶的子產品。
環境搭建
安裝Python并添加到環境變量,pip安裝需要的相關子產品即可。
原理簡介
一. 思路
電腦每隔一段時間檢視指定郵箱中是否收到了新的郵件,若未收到,則不進行任何操作,若收到了,則判斷發件人的身份,若發件人為合法的控制者,則解析發件人的郵件,執行解析結果,否則忽略該郵件。
二. 具體實作
(1)收發郵件
我們利用POP3協定來收取郵件,利用SMTP協定來發送郵件,python内置對着兩個協定的支援,是以具體實作起來十分簡單輕松。
注1:
電腦端郵箱本人使用了新浪郵箱,手機端郵箱本人使用了QQ郵箱。
(2)檢視電腦狀況
直接利用PIL子產品的ImageGrab.grab()函數對電腦進行截屏,然後通過郵件把電腦截屏發送到手機上。
如果想檢視模型運作的情況,走之前把模型訓練界面顯示在桌面上就可以啦~
(3)可擴充性
除了檢視電腦狀況外,目前僅支援利用cmd指令控制電腦,若需要添加其他功能,可在下圖所示的位置上添加:
def run(self):
print('[INFO]:Start server successfully...')
while True:
self.email.reset_pop()
mails = self.email.get('list')['list'][1]
if len(mails) > self.num_msg:
for i in range(self.num_msg+1, len(mails)+1):
res = self.email.get(i)
res_from = res[i]['From']
res_from = re.findall(r'<(.*?)>', res_from)[0].lower()
print(res_from)
if res_from != options['sender']['email'].lower():
continue
command = res[i]['Subject']
if command in word2cmd_dict:
command = word2cmd_dict[command]
if command == 'screenshot':
savename = './screenshot.jpg'
self.screenshot(savename)
try:
is_success = self.email.send(attach_path=savename)
if not is_success:
raise RuntimeError('Fail to send screenshot...')
print('[INFO]: Send screenshot successfully...')
except:
print('[Error]: Fail to send screenshot...')
else:
self.run_cmd(command)
self.num_msg = len(mails)
time.sleep(self.time_interval)
(4)易用性
cmd指令太長手機上打起來不友善或者記不住怎麼辦?你可以在word2cmd.json中設定快捷指令語:
(5)FAQ
① 電腦端發送郵件失敗?
解決方案:
若電腦端發送的郵件被識别為垃圾郵件使得手機端無法檢視電腦狀況時,可用手機登陸電腦端使用的郵箱,檢視被退回的郵件,這樣就可以在手機上檢視電腦運作狀況了。
注3:
若為手機端郵箱拒收,可以設定一下白名單。
② 電腦端無法登陸郵箱?
你需要開啟SMTP和POP3服務:
密碼應為用戶端授權密碼,而非登陸密碼。當然新浪郵箱的登入密碼即為用戶端授權密碼。
使用示範
Step1:修改配置檔案
必須修改的配置檔案為:
config.json。
作用:
設定電腦端和手機端郵箱的資訊。手機端郵箱的資訊用于驗證發信人是否為合法控制電腦者,電腦端郵箱的資訊用于電腦端接收和發送郵件。
若需要加密SMTP會話,請設定enable_ssl為true,并設定正确的端口号。
選擇修改的配置檔案為:
word2cmd.json。
設定快捷指令語。
Step2:運作Server.py檔案
發送指令:
執行指令:
結果:
文章到這裡就結束了,感謝你的觀看,關注我每天分享Python小工具系列,下篇文章分享有趣的小程式