標籤:
實現思路:通過檢測收件匣中的指定使用者發過來的郵件,檢測郵件標題,執行指定命令。程式定時檢測收件匣中的郵件,分離收件匣中第一封郵件的寄件者和標題,若寄件者不是指定使用者則忽略該郵件;若寄件者匹配,檢測郵件中的標題,並執列名中指定指定命令,同時會發送兩封郵件出去,一封無意義標題的郵件給自己,防止重複執行命令,一封發到指定使用者,告知該使用者相應命令已執行。
# -*- coding: cp936 -*-import os, sys, stringimport poplibimport smtplibimport timedef receive_mail(): #檢測郵箱是否接收到指定郵箱發過來的命令郵件 host = "pop3.126.com" # pop3伺服器位址 username = "[email protected]" # 使用者名稱 password = "password" # 密碼 pp = poplib.POP3(host) # 建立一個pop3對象,這個時候實際上已經串連上伺服器了 pp.set_debuglevel(1) # 設定偵錯模式,可以看到與伺服器的互動資訊 pp.user(username) # 向伺服器發送使用者名稱 pp.pass_(password) # 向伺服器發送密碼 ret = pp.stat() # 擷取伺服器上信件資訊,返回是一個列表,第一項是一共有多上封郵件,第二項是共有多少位元組 down = pp.retr(ret[0]) #擷取第一封郵件 # 輸出郵件內容 #for line in down[1]: # print line getfrom=down[1][9].decode(‘utf-8‘)0 getsubject=down[1][11].decode(‘utf-8‘) pp.quit() # 退出 if getfrom!=‘From: "=?utf-8?B?5qKB6ZSm5r2u?=" <[email protected]>‘: pass else: if getsubject==‘Subject: reboot‘: return 1 elif getsubject==‘Subject: restartmq‘: return 2 elif getsubject==‘Subject: ifconfig‘: return 3 else: return 0def sendmail(): send_mail="[email protected]" #發件郵箱 send_mail_passwd="password" #發件郵箱密碼 receive_mail=‘[email protected]‘ #接收郵箱 send_mail_server=‘smtp.126.com‘ #發件郵箱smtp伺服器 mail_to = smtplib.SMTP(send_mail_server,25) mail_to.login(send_mail,send_mail_passwd) msg = "From: [email protected] <"+send_mail+""">To: <"""+receive_mail+""">Subject: igorn messigorn mess""" mail_to.sendmail(send_mail,receive_mail,msg) mail_to.close() def sendreply(): send_mail="[email protected]" #發件郵箱 send_mail_passwd="password" #發件郵箱密碼 receive_mail=‘[email protected]‘ #接收郵箱 send_mail_server=‘smtp.126.com‘ #發件郵箱smtp伺服器 mail_to = smtplib.SMTP(send_mail_server,25) mail_to.login(send_mail,send_mail_passwd) msg = "From: [email protected] <"+send_mail+""">To: <"""+receive_mail+""">Subject: order excuorder excu""" mail_to.sendmail(send_mail,receive_mail,msg) mail_to.close()if __name__==‘__main__‘: while 1: time.sleep(5) if receive_mail()==1: sendmail() sendreply() os.system(‘shutdown -r now‘) elif receive_mail()==2: sendmail() sendreply() os.system(‘restartmq‘) elif receive_mail()==3: sendmail() sendreply() os.system(‘ifconfig‘) else: pass
利用python 通過郵件執行系統命令