Recently, I often need to simply control the computer remotely , For example, check the model training on the computer remotely , After the model training, turn off the computer remotely, etc , So I wanted to use python Let's simply implement these functions , Directly use email to remotely control your computer .
Let's start happily ~
Python edition ：3.6.4
Related modules ：
PIL modular ;
email modular ;
As well as some Python Built in modules .
install Python And add to environment variable ,pip Install the relevant modules required .
Introduction of the principle
One . Ideas
The computer checks whether new mail has been received in the specified mailbox at regular intervals , If not received , Nothing is done , If you get it , Then determine the identity of the sender , If the sender is a legitimate controller , Then parse the sender's mail , Execute the parsing result , Otherwise, ignore the message .
Two . Concrete realization
（1） Send and receive mail
We make use of POP3 Protocol to receive mail , utilize SMTP Protocol to send email ,python Built in support of two protocols , Therefore, the concrete implementation is very simple and easy .
I used Sina mailbox on the computer , The mobile email I used QQ mailbox .
（2） Check the condition of the computer
Direct use of PIL Modular ImageGrab.grab() Function to take a screenshot of the computer , Then send the computer screenshot to the mobile phone by e-mail .
If you want to see how the model works , Just display the model training interface on the desktop before leaving ~
In addition to checking the status of the computer , At present, only cmd Command control computer , If you need to add other functions , You can add... At the position shown in the figure below ：
def run(self): print('[INFO]:Start server successfully...') while True: self.email.reset_pop() mails = self.email.get('list')['list'] 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).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） Ease of use
cmd The command is too long. It's inconvenient to call on the mobile phone or can't remember what to do ？ You can word2cmd.json Set shortcut command language in ：
① The computer failed to send mail ？
If the email sent by the computer is recognized as spam, so that the mobile terminal cannot view the computer status , You can log in to the mailbox used by the computer with your mobile phone , View returned mail , In this way, you can check the health of the computer on your mobile phone .
If it is a mobile email, it will be rejected , You can set up a white list .
② The computer cannot log in to the mailbox ？
You need to turn on SMTP and POP3 service ：
The password should be the client authorization password , Not the login password . Of course, the login password of sina mailbox is the client authorization password .
Using the demonstration
Step1： Modify the configuration file
The configuration file that must be modified is ：
Set the information of computer and mobile mailbox . The information of the mobile phone mailbox is used to verify whether the sender is the person who legally controls the computer , The information of the computer mailbox is used to receive and send mail at the computer .
If encryption is needed SMTP conversation , Please set up enable_ssl by true, And set the correct port number .
Select the modified configuration file as ：
Set shortcut command language .
Step2： function Server.py file
Send instructions ：
Execution instruction ：
This is the end of the article , Thanks for watching , Follow me and share every day Python Gadget series , The next article shares interesting applets
To thank readers , I want to share with you some of my recent collections of programming dry goods , Give back to every reader , I hope I can help you .
Dry goods mainly include ：
① 2000 Multiple copies Python e-book （ There should be both mainstream and classic books ）
② Python Standard library information （ The most complete Chinese version ）
③ Project source code （ Forty or fifty interesting and classic training projects and source code ）
④ Python Basic introduction 、 Reptiles 、web Development 、 Big data analysis video （ Suitable for Xiaobai to learn ）
⑤ Python Learning Roadmap （ Farewell to bad learning ）
⑥ Two days of Python Live access to reptile camp
**All done~ Full source code + For dry goods, please refer to the profile of your home page or private letter for details