当前位置:   article > 正文

linux设置定时发送邮件[定时获取ip并通过smtp邮件发送][Linux cron排期工具][python获取ubuntu的ip]_smtp协议 定时邮件

smtp协议 定时邮件

linux设置定时发送邮件
[定时获取ip并通过smtp邮件发送]
[Linux cron排期工具]
[python获取ubuntu的ip]


前言

在使用远程工具的时候,第一步是需要知道目标主机的ip,随着DHCP的广泛使用,ip变的灵活的同时也给远程操作带来了些许烦恼。经常因为断电、断网、移机等操作使得远程主机的ip地址发生变化。相信不少人都遇到过下面的情况
Connection failed
下面,本文将介绍一种定时获取远程主机ip的方法。
提示:该方法将用到smtp邮件和python脚本,当然也可以使用shell脚本,本文暂不涉及shell脚本方法


提示:以下是本篇文章正文内容,下面案例可供参考

一、使用smtp发送邮件

提示:本方法非原创,引用地址贴在下面,为防止地址失效,在这里将重述引文方法(此处不完全是对引文的copy,有较多补充之处)
引文地址:https://zhuanlan.zhihu.com/p/338190964

这里使用python的smtp包发送邮件,需要一个支持smtp的邮箱(常见的邮箱都支持smtp),以sina.com邮箱为例:

import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from time import asctime

def send_an_email(email_content): # email_content是一个字符串
    mail_host = "smtp.sina.com" # 这个去邮箱找
    mail_user = 发送的邮箱地址
    mail_auth_code = 授权码,不是邮箱的登陆密码
    mail_sender = mail_user # 用mail_user 作为发送人
    mail_receivers = [收件人list]
    message = MIMEMultipart()
    message['From'] = Header(mail_sender)  # 寄件人
    message['Subject'] = Header("主题名字")
    message.attach(MIMEText(asctime(), 'plain', 'utf-8'))
    message.attach(MIMEText(email_content, 'plain', 'utf-8'))
    print("message is {}".format(message.as_string())) # debug用
    smtpObj = smtplib.SMTP(mail_host)
    # smtpObj.set_debuglevel(1) # 同样是debug用的
    smtpObj.login(mail_user, mail_auth_code) # 登陆
    smtpObj.sendmail(mail_sender, mail_receivers, message.as_string()) # 真正发送邮件就是这里
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

使用该脚本之前,还需要对邮箱进行设置

1.邮箱设置步骤

1.登陆自己的http://sina.com邮箱,找到设置,找到客户端pop/imap/smtp。从这里找到smtp服务器的地址,以及生成授权码。
找到邮箱设置中的smtp

2.在邮箱设置里面获得授权码:
在邮箱设置里面获得授权码

3.将邮箱配置好之后,可以调用这个send_an_email函数。自己修改email_content和Header,查看发送效果。通过smtp发送了一封邮件:
在这里插入图片描述

2.自动化邮件发送

虽然前面实现了自动获取ip地址,也实现了通过python的smtp包进行邮件发送。但是离智能还是差一点:所有过程都得人工去运行这个脚本。我们希望的是:ipv6地址一旦变化,就给我发邮件,但是又不要时时刻刻给我发邮件。

实现思路是监控服务器的ipv6地址,将当前的ipv6地址存储下来,每隔一个固定时间就检查一下服务器ipv6地址,如果没有变化,则不发送邮件,如果有变化,则发送邮件。按照这个思路对获取ipv6地址的代码进行改造:

def get_temp_ip(current_ip):
    temp_ip_json_path = "/var/tmp/ip.json"
    if not os.path.exists(temp_ip_json_path):
        print("No {}, dump it.".format(temp_ip_json_path))
        with open(temp_ip_json_path, 'w') as jo:
            json.<
  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/628369
推荐阅读
相关标签
  

闽ICP备14008679号