赞
踩
linux设置定时发送邮件
[定时获取ip并通过smtp邮件发送]
[Linux cron排期工具]
[python获取ubuntu的ip]
在使用远程工具的时候,第一步是需要知道目标主机的ip,随着DHCP的广泛使用,ip变的灵活的同时也给远程操作带来了些许烦恼。经常因为断电、断网、移机等操作使得远程主机的ip地址发生变化。相信不少人都遇到过下面的情况
下面,本文将介绍一种定时获取远程主机ip的方法。
提示:该方法将用到smtp邮件和python脚本,当然也可以使用shell脚本,本文暂不涉及shell脚本方法
提示:以下是本篇文章正文内容,下面案例可供参考
提示:本方法非原创,引用地址贴在下面,为防止地址失效,在这里将重述引文方法(此处不完全是对引文的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.登陆自己的http://sina.com邮箱,找到设置,找到客户端pop/imap/smtp。从这里找到smtp服务器的地址,以及生成授权码。
2.在邮箱设置里面获得授权码:
3.将邮箱配置好之后,可以调用这个send_an_email函数。自己修改email_content和Header,查看发送效果。通过smtp发送了一封邮件:
虽然前面实现了自动获取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.<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。