Preface
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 ~
development tool
Python edition :3.6.4
Related modules :
PIL modular ;
email modular ;
As well as some Python Built in modules .
Environment building
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 .
notes 1:
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 ~
(3) Extensibility
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'][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) 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 :
(5)FAQ
① The computer failed to send mail ?
Solution :
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 .
notes 3:
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 ?
Solution :
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 :
config.json.
effect :
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 :
word2cmd.json.
effect :
Set shortcut command language .
Step2: function Server.py file
Send instructions :
Execution instruction :
result :
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