创建文件:ipmail.py并写入以下后续内容。
使用方法:./ipmail.py myhost
在crontab -e中增加定时执行,每分钟一次
*/1 * * * * /path/to/ipmail.py myhost
#!/usr/bin/python3 # -*- coding:utf-8 -*- # coder itw # date 20200406 # # 本代码主要用于检查当前操作系统的IPv6地址。在地址发生变更给某个邮箱发个邮件。 # 方便通过IPv6地址随时连接相关电脑。邮件主题可以通过参数进行定义可以方便的支持多个主机的情况。 # import os import sys MailTo = "mailto@qq.com" #收通知的邮件帐号如果有多个使用逗号分割。 MailServer = "smtp.qq.com" #你的邮箱服务器 MailPort = 465 MailAccount = "mailfrom@qq.com" #你的邮箱帐号 MailPassword = "password" #你的邮箱密码。 def sendEmail(addr, title, text): import smtplib from email.mime.text import MIMEText # from email.utils import formataddr msg = MIMEText(text, 'plain', 'utf-8') msg['From'] = MailAccount msg['To'] = addr msg['Subject'] = title try: server = smtplib.SMTP_SSL(MailServer, 465) server.login(MailAccount, MailPassword) server.sendmail(MailAccount, [addr], msg.as_string()) server.quit() return True except Exception: return False def readFile(name): if os.path.exists(name): try: f = open(name, 'r') s = f.read() return s finally: if f: f.close() else: return "" def writeFile(name, data): try: f = open(name, 'w') f.write(data) finally: if f: f.close() def getipaddr(): with os.popen("ip address|grep global|awk -F' ' '{print $2}'", "r") as p: r = p.read() return r def main(argv): if len(argv) < 2: print("useage: " + argv[0] + " hostname") print("hostname is the key make you known what host is this.") exit(0) # opts, args = getopt.getopt(args,) host = argv[1]; ipinfo = getipaddr() # print(ipinfo) oldipinfo = readFile("/tmp/ipinfo") if ipinfo != oldipinfo: writeFile("/tmp/ipinfo", ipinfo) sendEmail(MailTo, "host: " + host, ipinfo) print("ipinfo was changed,update mail sent.") else: print("ipinfo was not changed.") if __name__ == '__main__': main(sys.argv)