码迷,mamicode.com
首页 > 编程语言 > 详细

利用python 通过邮件执行系统命令

时间:2015-04-09 21:27:15      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

实现思路:通过检测收件箱中的指定用户发过来的邮件,检测邮件标题,执行指定命令。程序定时检测收件箱中的邮件,分离收件箱中第一封邮件的发件人和标题,若发件人不是指定用户则忽略该邮件;若发件人匹配,检测邮件中的标题,并执行标题中指定指定命令,同时会发送两封邮件出去,一封无意义标题的邮件给自己,防止重复执行命令,一封发到指定用户,告知该用户相应命令已执行。

 

# -*- coding: cp936 -*-

import os, sys, string
import poplib
import smtplib
import time

def receive_mail():                 #检测邮箱是否接收到指定邮箱发过来的命令邮件
    host = "pop3.126.com"            # pop3服务器地址
    username = "abc@126.com"         # 用户名
    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?=" <cde@126.com>:
        pass
    else:
        if getsubject==Subject: reboot:
            return 1
        elif getsubject==Subject: restartmq:
            return 2
        elif getsubject==Subject: ifconfig:
            return 3
        else:
            return 0


def sendmail():

    send_mail="abc@126.com"      #发件邮箱
    send_mail_passwd="password"            #发件邮箱密码
    receive_mail=abc@126.com  #接收邮箱    
    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: 123@123.com <"+send_mail+""">
To: <"""+receive_mail+""">
Subject: igorn mess

igorn mess
"""
    mail_to.sendmail(send_mail,receive_mail,msg)
    mail_to.close()

    
    
def sendreply():

    send_mail="abc@126.com"      #发件邮箱
    send_mail_passwd="password"            #发件邮箱密码
    receive_mail=cde@126.com  #接收邮箱    
    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: 123@123.com <"+send_mail+""">
To: <"""+receive_mail+""">
Subject: order excu

order 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 通过邮件执行系统命令

标签:

原文地址:http://www.cnblogs.com/id404/p/4405601.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!