国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現微信遠程控制電腦

2020-01-04 15:49:54
字體:
來源:轉載
供稿:網友

首先,我們要先看看微信遠程控制電腦的原理是什么呢?

我們可以利用Python的標準庫控制本機電腦,然后要實現遠程的話,我們可以把電子郵件作為遠程控制的渠道,我們用Python自動登錄郵箱檢測郵件,當我們發送關機指令給這個郵箱的時候,若Python檢測到相關的指令,那么Python直接發送本機的相關命令。

下面來分析一下該項目:

1.需求分析

1.范圍:用Python開發一個遠程操控電腦的項目。

2.總體要求:

2.1 總體功能要求:能夠通過該軟件遠程控制該軟件所在的電腦的重啟或關機操作。
2.2 系統要求:開發語言使用Python,并且開發出來的程序能在Windows運行。

2.設計

首先,我們可以利用Python的標準庫控制本機電腦,然后要實現遠程的話,我們可以把電子郵件作為遠程控制的渠道,我們用Python自動登錄郵箱檢測郵件,當我們發送關機指令給這個郵箱的時候,若Python檢測到關機的指令,那么Python直接發送本機的關閉。

3.編寫

本項目的流程圖如下

python,微信,遠程控制電腦

第一步,需要注冊一個新浪郵箱。然后點擊新浪郵箱點擊右上角設置如圖

python,微信,遠程控制電腦

選擇“客戶端pop/imap/smtp”

python,微信,遠程控制電腦

打開新浪郵箱的SMTP與POP3功能

python,微信,遠程控制電腦

具體實現代碼:
配置文件config.ini

[Slave]pophost = pop.sina.comsmtphost = smtp.sina.comport = 25username = XXX@sina.compassword = XXX[Boss]mail = XXX@qq.comtimelimit = 2[Command]shutdown=shutdown -f -s -t 100 -c closing...dir=dir[Open]music = F:Masetti - Our Own Heaven.mp3video = F:Jai Waetford - Shy.mp4notepad = notepad

excutor.py

 

#coding:utf-8import sysreload(sys)sys.setdefaultencoding("utf-8")import osimport win32apifrom mccLog import mccLogclass executor(object):  def __init__(self,commandDict,openDict):    '''    創建方法    :param commandDict:    :param openDict:    '''    self.mccLog = mccLog()    self.commandDict = commandDict    self.openDict = openDict  def execute(self,exe,mailHelper):    self.mailHelper = mailHelper    subject = exe['subject']    # self.mccLog.mccWriteLog(u'開始處理命令')    print u'start to process'    if subject !='pass':      self.mailHelper.sendMail('pass','Slave')      if subject in self.commandDict:        # self.mccLog.mccWriteLog(u'執行命令!')        print u'start command'        try:          command = self.commandDict[subject]          os.system(command)          self.mailHelper.sendMail('Success','Boss')          # self.mccLog.mccWriteLog(u'執行命令成功!')          print u'command success'        except Exception,e:          # self.mccLog.mccError(u'執行命令失敗'+ str(e))          print 'command error'          self.mailHelper.sendMail('error','boss',e)      elif subject in self.openDict:        # self.mccLog.mccWriteLog(u'此時打開文件')        print u'open the file now'        try:          openFile = self.openDict[subject]          win32api.ShellExecute(0,'open',openFile,'','',1)          self.mailHelper.sendMail('Success','Boss')          # self.mccLog.mccWriteLog(u'打開文件成功!')          print u'open file success'        except Exception,e:          # self.mccLog.mccError(u'打開文件失敗!' + str(e))          print u'open file error'          self.mailHelper.sendMail('error','Boss',e)      elif subject[:7].lower() =='sandbox':        self.sandBox(subject[8:])      else:        self.mailHelper.sendMail('error','Boss','no such command!')  def sandBox(self,code):    name = code.split('$n$')[0]    code = code.split('$n$')[1]    codestr = '/n'.join(code.split('$c$'))    codestr = codestr.replace('$',' ')    with open(name,'a') as f:      f.write(codestr)    os.system('python' + name)

configReader.py

#-*-coding:utf-8-*-import ConfigParserimport os,sysclass configReader(object):  def __init__(self,configPath):    configFile = os.path.join(sys.path[0],configPath)    self.cReader = ConfigParser.ConfigParser()    self.cReader.read(configFile)  def readConfig(self,section,item):    return self.cReader.get(section,item)  def getDict(self,section):    commandDict = {}#字典    items = self.cReader.items(section)    for key,value in items:      commandDict[key] = value    return commandDict

日志文件mccLog.py

#-*-coding:utf-8-*-import loggingfrom datetime import datetimeclass mccLog(object):  def __init__(self):    logging.basicConfig(      level=logging.DEBUG,      format='%(asctime)s %(levelname)s %(message)s',      datefmt='%Y-%m-%d %H:%M:%S',      filename=datetime. now().strftime('%Y%m%d%H%M%S') + '.log',      filemode='a'    )  def mccWriteLog(self,logContent):      logging.info(logContent)  def mccError(self,errorContent):      logging.error(errorContent)

mailHelper.py

 

#-*-coding:utf-8-*-import sysreload(sys)sys.setdefaultencoding("utf-8")from email.mime.text import MIMETextfrom configReader import configReaderfrom mccLog import mccLogimport poplibimport smtplibimport reclass mailHelper(object):  CONFIGPATH = 'config.ini'  def __init__(self):    '''    初始化郵件    '''    self.mccLog = mccLog()    cfReader = configReader(self.CONFIGPATH)    self.pophost = cfReader.readConfig('Slave','pophost')    self.smtphost = cfReader.readConfig('Slave','smtphost')    self.port = cfReader.readConfig('Slave','port')    self.username = cfReader.readConfig('Slave','username')    self.password = cfReader.readConfig('Slave','password')    self.bossMail = cfReader.readConfig('Boss','mail')    self.loginMail()    self.configSlaveMail()  def loginMail(self):    '''    驗證登陸    :return:    '''    self.mccLog.mccWriteLog('start to login the E-mail')    print 'start to login e-mail'    try:      self.pp = poplib.POP3_SSL(self.pophost)      self.pp.set_debuglevel(0)#可以為0也可以為1,為1時會顯示出來      self.pp.user(self.username)#復制      self.pp.pass_(self.password)      self.pp.list()#列出賦值      print 'login successful!'      self.mccLog.mccWriteLog('login the email successful!')      print 'login the email successful!'    except Exception,e:      print 'Login failed!'      self.mccLog.mccWriteLog('Login the email failed!')      exit()  def acceptMail(self):    '''    接收郵件    :return:    '''    self.mccLog.mccWriteLog('Start crawling mail!')    print 'Start crawling mail'    try:      ret = self.pp.list()      mailBody = self.pp.retr(len(ret[1]))      self.mccLog.mccWriteLog('Catch the message successfully')      print 'Catch the message successfully'      return mailBody    except Exception,e:      self.mccLog.mccError('Catch the message failed' + e)      print 'Catch the message failed'      return None  def analysisMail(self,mailBody):    '''    正則分析郵件    :param mailBody:    :return:    '''    self.mccLog.mccWriteLog('Start crawling subject and sender')    print 'Start crawling subject and sender'    try:      subject = re.search("Subject: (.*?)',",str(mailBody[1]).decode('utf-8'),re.S).group(1)      print subject      sender = re.search("'X-Sender: (.*?)',",str(mailBody[1]).decode('utf-8'),re.S).group(1)      command = {'subject':subject,'sender':sender}      self.mccLog.mccWriteLog("crawling subject and sender successful!")      print 'crawling subject and sender successful'      return command    except Exception,e:      self.mccLog.mccError("crawling subject and sender failed!" + e)      print 'crawling subject and sender failed!'      return None  def sendMail(self,subject,receiver,body='Success'):    '''    發送郵件    :param subject:    :param receiver:    :param body:    :return:    '''    msg = MIMEText(body,'plain','utf-8')    #中文需要參數utf-8,單字節字符不需要    msg['Subject'] = subject    msg['from'] = self.username    self.mccLog.mccWriteLog('Start sending mail' + 'to' +receiver)    print 'Start sending mail'    if receiver == 'Slave':      try:        self.handle.sendmail(self.username,self.username,msg.as_string())        self.mccLog.mccWriteLog('Send the message successfully')        print 'Send the message successfully'      except Exception,e:        self.mccLog.mccError('Send the message failed' + e)        print 'Send the message failed'        return False    elif receiver == 'Boss':      try:        self.handle.sendmail(self.username,self.bossMail,msg.as_string())        self.mccLog.mccWriteLog('Send the message successfully')        print 'Send the message successfully'      except Exception,e:        self.mccLog.mccError('Send the message failed!' + e)        print 'Send the message failed!'        return False  def configSlaveMail(self):    '''    配置郵件    :return:    '''    self.mccLog.mccWriteLog('Start configuring the mailbox')    print 'Start configuring the mailbox'    try:      self.handle = smtplib.SMTP(self.smtphost, self.port)      self.handle.login(self.username, self.password)      self.mccLog.mccWriteLog('The mailbox configuration is successful')      print 'The mailbox configuration is successful'    except Exception, e:      self.mccLog.mccError('The mailbox configuration is failed' + e)      print 'The mailbox configuration is failed'      exit()## if __name__=='__main__':#   mail = mailHelper()#   body = mail.acceptMail()#   print body#   print mail.analysisMail(body)#   mail.sendMail('OK','Slave')

weiChatControlComputer.py

 

#-*-coding:utf-8-*-import sysreload(sys)sys.setdefaultencoding("utf-8")import timeimport sysfrom mailHelper import mailHelperfrom excutor import executorfrom configReader import configReader__Author__ = 'william'__Verson__ = 0.5reload(sys)sys.setdefaultencoding('utf-8')class MCC(object):  CONFIGPATH = 'config.ini'  KEY_COMMAND = 'Command'  KEY_OPEN = 'Open'  KEY_BOSS = 'Boss'  KEY_TIMELIMIT = 'timelimit'#掃描時間的頻率  def __init__(self):    self.mailHelper = mailHelper()    self.configReader = configReader(self.CONFIGPATH)    commandDict = self.configReader.getDict(self.KEY_COMMAND)    openDict = self.configReader.getDict(self.KEY_OPEN)    self.timeLimit = int(self.configReader.readConfig(self.KEY_BOSS,self.KEY_TIMELIMIT))    self.excutor = executor(commandDict,openDict)    self.toRun()  def toRun(self):    '''    實現輪訓操作    :return:    '''    while True:      self.mailHelper = mailHelper()      self.run()      time.sleep(self.timeLimit)  def run(self):    mailBody = self.mailHelper.acceptMail()    if mailBody:      exe = self.mailHelper.analysisMail(mailBody)      if exe:        self.excutor.execute(exe,self.mailHelper)if __name__ == '__main__':  mcc = MCC()

運行截圖:

python,微信,遠程控制電腦

4.總結

在這個小項目的編寫過程中,知道了項目開發的基本流程并且走了一遍,通過項目管理的方式去開發項目,并且在這個小項目開發的過程中,復習了Python一些初級階段的基礎知識,并且更深刻體會到從項目的設計到項目的實施,以及項目的測試運維等步驟需要程序員深刻的理解,這樣才能在項目中逐漸完善自我。

待續。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 河津市| 宝坻区| 临西县| 祁连县| 财经| 托里县| 镇赉县| 新疆| 肇东市| 江川县| 永安市| 梁平县| 晋城| 闻喜县| 广灵县| 锡林浩特市| 南汇区| 左云县| 上林县| 西平县| 达州市| 循化| 元氏县| 漳州市| 东台市| 松潘县| 衡南县| 临夏市| 泾源县| 丰城市| 青海省| 永川市| 华坪县| 始兴县| 鄂州市| 怀宁县| 雅江县| 麻江县| 昌黎县| 伊宁县| 苏尼特右旗|