本文轉載至知乎ID:Charles(白露未晞)知乎個人專欄
本文轉載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎隨時隨地學編程>>戳此了解
導語
最近經常需要簡單地遠程控制一下電腦,比如遠程查看一下電腦上模型訓練的情況,模型訓練完之后遠程關閉電腦等等,于是就想著利用python來簡單地實現(xiàn)一下這些功能,直接利用郵件遠程控制自己電腦。
讓我們愉快地開始吧~
相關文件
網盤下載鏈接: https://pan.baidu.com/s/1yWiZPWKE44n1UxgkdFfMlQ
密碼: 8jiq
開發(fā)工具
Python版本:3.6.4
相關模塊:
PIL模塊;
email模塊;
以及一些Python自帶的模塊。
環(huán)境搭建
安裝Python并添加到環(huán)境變量,pip安裝需要的相關模塊即可。
原理簡介
一. 思路
電腦每隔一段時間查看指定郵箱中是否收到了新的郵件,若未收到,則不進行任何操作,若收到了,則判斷發(fā)件人的身份,若發(fā)件人為合法的控制者,則解析發(fā)件人的郵件,執(zhí)行解析結果,否則忽略該郵件。
二. 具體實現(xiàn)
(1)收發(fā)郵件
我們利用POP3協(xié)議來收取郵件,利用SMTP協(xié)議來發(fā)送郵件,python內置對著兩個協(xié)議的支持,因此具體實現(xiàn)起來十分簡單輕松。
注1:
此處推薦廖雪峰的Python教程,里面有關于收發(fā)郵件的詳細介紹,我就不搬磚了。
注2:
電腦端郵箱本人使用了新浪郵箱,手機端郵箱本人使用了QQ郵箱。
(2)查看電腦狀況
直接利用PIL模塊的ImageGrab.grab()函數對電腦進行截屏,然后通過郵件把電腦截屏發(fā)送到手機上。
如果想查看模型運行的情況,走之前把模型訓練界面顯示在桌面上就可以啦~
(3)可擴展性
除了查看電腦狀況外,目前僅支持利用cmd命令控制電腦,若需要添加其他功能,可在下圖所示的位置上添加:
(4)易用性
cmd命令太長手機上打起來不方便或者記不住怎么辦?你可以在word2cmd.json中設置快捷命令語:
(5)FAQ
① 電腦端發(fā)送郵件失敗?
解決方案:
若電腦端發(fā)送的郵件被識別為垃圾郵件使得手機端無法查看電腦狀況時,可用手機登陸電腦端使用的郵箱,查看被退回的郵件,這樣就可以在手機上查看電腦運行狀況了。
注3:
若為手機端郵箱拒收,可以設置一下白名單。
② 電腦端無法登陸郵箱?
解決方案:
你需要開啟SMTP和POP3服務:
密碼應為客戶端授權密碼,而非登陸密碼。當然新浪郵箱的登錄密碼即為客戶端授權密碼。
That's All.
完整源代碼請自行參考相關文件。
使用演示
Step1:修改配置文件
必須修改的配置文件為:
config.json。
作用:
設置電腦端和手機端郵箱的信息。手機端郵箱的信息用于驗證發(fā)信人是否為合法控制電腦者,電腦端郵箱的信息用于電腦端接收和發(fā)送郵件。
若需要加密SMTP會話,請設置enable_ssl為true,并設置正確的端口號。
選擇修改的配置文件為:
word2cmd.json。
作用:
設置快捷命令語。
Step2:運行Server.py文件
發(fā)送指令:
執(zhí)行指令:
結果:
That's All.
更多
代碼截止2018-08-07測試無誤。
相關文件中提供了打包好的EXE文件版本,無需配置環(huán)境即可使用。