python如何實(shí)現(xiàn)遠(yuǎn)程控制電腦(結(jié)合微信)
不知道大家有沒(méi)有這樣一個(gè)煩惱,“自己的電腦總是被別人使用,又不好意思設(shè)置密碼”,所以利用python設(shè)計(jì)了一個(gè)程序來(lái)實(shí)現(xiàn)自由管控。
功能雖然簡(jiǎn)單,但大家可以通過(guò)其思路來(lái)實(shí)現(xiàn)更多的功能。
大致功能主要是兩個(gè)部分,
- 一、電腦開(kāi)機(jī)時(shí),我的手機(jī)能收到通知。
- 二、可以通過(guò)手機(jī)發(fā)個(gè)特定的mail,就可以控制電腦關(guān)機(jī)。
第一個(gè)步驟:申請(qǐng)一個(gè)郵箱,使這個(gè)郵箱與你的手機(jī)號(hào)碼綁定,然后你在這個(gè)郵箱中設(shè)定如果有新的郵件就發(fā)短信通知,這樣開(kāi)機(jī)時(shí)往這個(gè)郵箱發(fā)個(gè)mail,我手機(jī)就會(huì)收到短信通知了。
第二個(gè)步驟:通過(guò)python 腳本,定時(shí)去檢查163.com郵箱中是否有指定的郵件,如果有,則執(zhí)行特定功能(我的是關(guān)機(jī))。
第一步驟申請(qǐng)成功以后。手機(jī)也可以通過(guò)一個(gè)號(hào)碼10658139來(lái)發(fā)送mail,編輯短信格式如:test@163.com(空格)主旨(空格)正文.
這樣我如果想關(guān)機(jī),就會(huì)用手機(jī)發(fā)個(gè)mail到163郵箱,主旨是'關(guān)機(jī)',程式檢測(cè)到這個(gè)mail以后就會(huì)執(zhí)行關(guān)機(jī)動(dòng)作。
注意:手機(jī)發(fā)送郵件時(shí)的格式,注意讀取郵件時(shí)get_payload的輸出,根據(jù)輸出和你發(fā)的郵件內(nèi)容要匹配,當(dāng)時(shí)我就遇到\n的問(wèn)題。
回去后想了想,既然可以用手機(jī)郵箱控制,那么大家都用的是智能機(jī)咯,而且大家都比較喜歡玩微信,那么微信里面有個(gè)郵箱助手,實(shí)時(shí)提醒你新郵件,這樣可以更方便的控制你自己的機(jī)子咯?。。。?!
#!/etc/bin/env python
#-*-encoding=utf-8-*-
#auth@:dengyongkai
#blog@:blog.sina.com.cn/kaiyongdeng
import poplib,email
from email.header import decode_header
import smtplib
import time
import os,sys
import random
def accp_mail():
try:
p=poplib.POP3('pop.qq.com')
p.user('用戶名')
p.pass_('密碼')
ret = p.stat()
except poplib.error_proto,e:
return 1
print "Login failed:",e
sys.exit(1)
# for i in range(1,ret[0]+1):
# str=s.top(i,0)
# strlist=[]
# for x in str[1]:
# try:
# strlist.append(x.decode())
# except:
# try:
# strlist.append(x.decode('gbk'))
# except:
# strlist.append(x.decode('big5'))
#
# mm = email.message_from_string('\n'.join(strlist))
# sub=decode_header(mm['subject'])
# if sub[0][1]:
# submsg = sub[0][0].decode(sub[0][1])
# else:
# submsg = sub[0][0]
#
# if submsg.strip()=='startpc':
# s.dele(i)
# return 0
#
# s.quit()
# return 1
#
for item in p.list()[1]:
number,octets = item.split(' ')
# print "Message %s: %sbytes"%(number,octets)
lines = p.retr(number)[1]
msg = email.message_from_string("\n".join(lines))
# print msg.as_string()
print msg.get_payload()
if msg.get_payload()=="start\n\n":
return 0
def send_mail():
try:
handle = smtplib.SMTP('smtp.163.com', 25)
handle.login('********@163.com','密碼')
msg = "To: ********@qq.com\r\nFrom: ********@163.com\r\nSubject: startpc \r\n\r\nstart\r\n"
handle.sendmail('********@163.com','********@qq.com', msg)
handle.close()
return 1
except:
return 0
if __name__=='__main__':
while send_mail()==0:
time.sleep(2)
while 1:
time.sleep(5)
if accp_mail()==0:
os.system('shutdown -f -s -t 10 -c closing...')
#print "哈哈哈哈哈哈哈,成功啦!?。。。?!"
break
以上就是python實(shí)現(xiàn)遠(yuǎn)程控制電腦的方法,解決了大家的煩惱,趕緊試驗(yàn)一下吧!
相關(guān)文章
最大K個(gè)數(shù)問(wèn)題的Python版解法總結(jié)
這篇文章主要介紹了最大K個(gè)數(shù)問(wèn)題的Python版解法總結(jié),以最大K個(gè)數(shù)問(wèn)題為基礎(chǔ)的算法題目在面試和各大考試及競(jìng)賽中經(jīng)常出現(xiàn),需要的朋友可以參考下2016-06-06
Python列表list操作相關(guān)知識(shí)小結(jié)
今天,本喵帶大家仔細(xì)溫習(xí)一下Python的列表,溫故而知新,不亦說(shuō)乎,需要的朋友可以參考下2020-01-01
pycharm不以pytest方式運(yùn)行,想要切換回普通模式運(yùn)行的操作
這篇文章主要介紹了pycharm不以pytest方式運(yùn)行,想要切換回普通模式運(yùn)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
python logging 重復(fù)寫日志問(wèn)題解決辦法詳解
這篇文章主要介紹了python logging 重復(fù)寫日志問(wèn)題解決辦法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Python之tkinter面板PanedWindow的使用
這篇文章主要介紹了Python之tkinter面板PanedWindow的使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
Python實(shí)現(xiàn)字典去除重復(fù)的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)字典去除重復(fù)的方法,涉及Python字典遍歷、文件讀取、去除重復(fù)等相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息示例
這篇文章主要介紹了Python微信企業(yè)號(hào)開(kāi)發(fā)之回調(diào)模式接收微信端客戶端發(fā)送消息及被動(dòng)返回消息的方法,涉及Python微信企業(yè)號(hào)回調(diào)模式消息響應(yīng)機(jī)制相關(guān)操作技巧,需要的朋友可以參考下2017-08-08

