前一段时间路由器刷的老毛子固件“穿透服务”中定时更新阿里DDNS失败了,用了很久第一次遇到。所以需要做个备用的措施用来实时获取公网ip信息
1、基于python实现
- 开启邮箱的SMTP功能
- 拿到授权码(不是登录密码)
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import re
import random
import requests
import logging
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from string import Template
from email.utils import parseaddr, formataddr
# 输出日志格式
logging.basicConfig(format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s',level=logging.INFO,filename='sendWANIP.log',filemode='a')def _format_addr(s):"""美化邮箱地址,用于可显示发/收件人:param s: 邮件地址:return: 美化后的地址"""addr = parseaddr(s)return formataddr(addr)def get_current_ip():"""获取当前公网ip地址:return: 公网ip地址"""ip_reg = re.compile("((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})(\\.((2(5[0-5]|[0-4]\\d))|[0-1]?\\d{1,2})){3}")# 可根据需求增删获取ip网址api_tuple = ("http://txt.go.sohu.com/ip/soip","https://ident.me/","https://ifconfig.me/ip","https://icanhazip.com/","https://checkip.amazonaws.com/","http://members.3322.org/dyndns/getip")url = api_tuple[random.randrange(len(api_tuple))]# print(url)r = requests.get(url)ip = re.findall(r'\d+.\d+.\d+.\d+', r.text)# ip[0]if re.match(ip_reg,ip[0]):logging.info("从{}获取地址成功!ip={}".format(url,ip))return ip[0]else:logging.error("从{}获取地址失败!".format(url))exit(-1)def record_ip(params):"""将最新的ip记录在文件中:param params: 包含ip的参数"""filename="./lastwanip"last_wan_ip=""if os.path.exists(filename):f=open(filename,'r');last_wan_ip=f.readline()f.close()logging.info("从文件中读到ip地址为:{}".format(last_wan_ip))if last_wan_ip!= params['current_ip']:f = open(filename, 'w');f.write(params['current_ip'])f.close()else:logging.info("ip地址已经是最新的,无需更新")exit(0)
def send_mail(params):"""给指定用户发送邮件:param params: 发送邮件信息:return: 0: 发送成功,>0 发送失败"""# 第三方 SMTP 服务mail_host = "smtp.163.com" # 设置服务器mail_user = "xxxx" # 用户名mail_pass = "xxxxxxxx" # 口令,即授权码不是账户密码receivers = sender = 'xxxx@163.com'# 邮件内容支持html格式,仿照的腾讯云模板mail_text="""<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>IP地址</title></head><body><div><includetail><div align="center"><div class="open_email" style="margin-left: 8px; margin-top: 8px; margin-bottom: 8px; margin-right: 8px;"><div><br><span class="genEmailContent"><div id="cTMail-Wrap"style="word-break: break-all;box-sizing:border-box;text-align:center;min-width:320px; max-width:660px; border:1px solid #f6f6f6; background-color:#f7f8fa; margin:auto; padding:20px 0 30px; font-family:'helvetica neue',PingFangSC-Light,arial,'hiragino sans gb','microsoft yahei ui','microsoft yahei',simsun,sans-serif"><div class="main-content" style=""><table style="width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse"><tbody><tr style="font-weight:300"><td style="width:3%;max-width:30px;"></td><td style="max-width:600px;"><div id="cTMail-logo" style="width:92px; height:25px;"><a href="#"><img id="logo" border="0" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALcAAABCCAYAAAAVMUc1AAAAAXNSR0IB2cksfwAAAAlwSFlzAAAOxAAADsQBlSsOGwAAGVNJREFUeJztXQl4FFW2xvW9N8ubUZCdhDWrISskgWxkJSSBIMqissiAGgFRcVBxVNQZHRdkGH3AoAaSEAiIbCK4gbiyGpAtEEBZxBi2AOm9uuqfe25Vdao73enOgnGe9ee7X3W6qm7frvrvuf8959TtNm106NChQ4cOHTp06NChQ4cOHTp06NChQ4cOHW3+9PAstA+OQ4e+KQhKGoE7pszGnx5/Be/vPLpbexwk3NBabdSho0nIGj0R85ZtwvS/LUL62BnoETsUfwxIxM2hg9AlIg3ZoyZhQWEZICKgtduqQ0ejMGZiAQ6crIYZQK0EWNi22iThn0vXY9zDs3Fzzyh0DojBG4uWYf0HXwp7jlaHNaZ+O3SLr6OVMGPWc9h39AQERmqj1QJGRk7wK6xcZOV79uKLg6fRJTgG3frGISxtOFJGTsLXh07f60v95Ud/yFny7kbMfvl1vPSP+fC1XRaL5ZqmfysdOhgef+4VfPjFbliJ3ILASX764iWUn7mA4+zNKvb/4Us2fLDrW4yZOgM3h/RHl5hMdIzJRre4PIx/5Fls3nXoQ22dq7fswpDxD8EvfijaRw1Gu4hMtA1JQIfgWJ/JzTpZx5b/tjp+VXj8uVdR+M4GLkvIYtdYbaisvojys0Zsr7ZgR7UBlUYJlxRrTtsyRt6JT87FTSFJ6BaVhq59E7hlHzF+CsITh8A/Mhkdwwehe3we7pr5Cu75yzwUfbAT72z5BoOGj8OC0rX4rLxi0faD301Q27Hr8Mm8zTv3f7Zl+76PEjLzkXPHeNB26Mh7sGDxSnz42e5/tuJl0vGfiOXrPsbf/vkmJ7aBae7LzGSWn/wJO36y4YsqERv2VyHj7gf4+2ZWyLJbRHBLf9kGLCxdjaF3F6BjSBy63JoAv76JiEwego1bd4D1CX4cHxXYOQa27R6RiM5hCWgfloz24WmIHDKOjQSD0TUqCx3CUuX3WaHJbPtQ1nnYMZ1Ck5nVT+Svx01/HnPfWuXzCKDjV4x5hcvx5EtvcMttZOWCIKHinAH7aoFj7P+0iY+he3Q6rIycdkZmgRVJotcCJIW41CmqWAWf7zuJarNcDzsMIh0g2WGzmvlr6kDL3/sUs15dhMy7piJy8J3oGp2BHnFD+OuMux/E0/+3HN+bWH2sI11gx2/YcQzzSjZhwiMvsBEhg40SqayDJOvk1uEda7fssIQOHMLJfckqW1eaSOY/9BS6p41Ez8TbMHziozCzfSJjrEjWmwrpc/aPlSw6I66BtpzoIqtDgElSLb3EjrOx8+XJqk2x5kR0cwOlVpQ7Cb02KR2outaON9lIER6fit2HTnRXvwOr879b8RLq+CWjU3B/nDc5E27+yvcw7N5HOdEvQ5YjRqYtTCQvFFlSYzMwIlvYfjMndA17bVBGgBrGOKrnslVgVl/iVt4miLDTuayT0EhA79cV+T2LUsjyG1jPMYp1soYKdZorrDFhAzMR2C+F2pzA/h3S2tdQxy8IKzZ+ip5Rg5hO7s/JWMussInpDrLGFiIkY5dNIRntJ81NxE3IG48OIfFYs/0rfG8/i+XbV2DT0fex/JtlSJuch87949EtOgUXGAlrFdlC1p2pGC5NiMBmQXIhdn1yqwTnWt0udxSrxpJfZHXRiOMXFImKYyfWsip+19rXVMfPCEZKj77i6PSR8ItIx6Lla7k1tDHbWmsxQOQ2VhbNEmMbWVuj4im5d9bzbDKYhCdffxvV7P8Ve9/HkvIlKNr3JlYeXYrVxzYh75Ep8BuQgQBWzjEmmojYrNSabbAws83JLsnyxF2xKsXEOoCA+lbbqMiVlZ/sRGDcYAzIyodBQBnb9fuf89rq+BmxctM2PDDrJdw59XGMfvBJZN7zCGLyJyMu/37c//R8zPj728gbP4MRIhdhyXegR798BMbmw2STrapdkQkG1SsiyDQnqXLRTu6/3WjL5Mvo+x7kRK8wn0LRruUoO7wMxQffQslhInkJNnz/BYZOuw/+USmYs3ClrK+pfk5UgdVvl92OYsNFJbiRDR+8MyiTVNpHkdSEvLHoEZOBv/z9DfqMWeyta1v7HuhoYez67kxURNYodI3KRrvgBHQO7YeOoVFoF5GA34Um47fBg/CHkAz8nm3b3ZqOwIThiEgdjRGTn8KX357ipBNFmdwmQZnM2WUresVk5hKAfNvBKfkISsrh+vsiEyjLd65Eyb5lKNpfiNLKYiw+WISSihVYffQTPLZwDpcmw+56mJO7lrHbKFhhFq18wsmlheSd3NTJVEtO+pvIzqWKBO4xuTUxD+csOMImtB1a+z7ouArIHDUefv2yEJE9GfOWfYzyQ0dwsPIQDv9YhSqb7PnY86MJXx8/h/JTF7gltioyg4Z3k93CSGSRSah6PJRjSKoYFHL/xi8Q/1q7kZP765PlKN5ThqWVZXjrYCEKK4pRXPkuFn2zCmsqt2F2cRF6D8xBbOYYLiO4xZXsXGYQYVWJ0RDB6VjVcqtWm84lvU6TWv/QWHy0fT8R/QH29vWtfR90XCVED74LfvEj8cScZbJvWbTALgmcmHt/uIBSpk8rLwk4zTQHH+IFsp4SI7gF5KAzsUKuNrLS5IngXhNRYISy84kmdYRD1TV45IU5eHFxEd76aD1Kmd4uq9yENSe3MDmyAfM+W4FJr83GLfGx6DYgBbF5o1F51ix3IMUSG5gFtyuk9UZu1Uqr8kS15lZle95op3YykYOeV/HS4tprryWfOlxeOx2jLddcc427Y3TUoXHX6+6CJ5ilvBNdwodwOSExEW1nMoDI02dgNjpEZeDGbqF4felqNqmTJYdRsjLtauGkVq25ibFGsEvcY2KzC/IEUJJdf8fP16JHNJM4vWPRPpxJnH4J8E/NRPvYFPglZKFbfBbahiWga2Qq8idNR43iQjQo5KbPtSo+ctL2Fo31dkdyrSThxzILzqOjdkW/S3y7WbKLt1ytu0AXXnPxtTfD6RjXG9bgzdLhdJ08GAxnxOVOhn/0UPx1TqF8861yElSniFSe2zF/xSb8xPQA7SN9bZFsjNTMeltl8hktMvFEJsAF1jEkSZKjioqnguRKFTPDxe9tw+TH5iBpxCSEp9+BhKGTMOa+ZzH54VfwZukWHDlpkoMuXNLYHJa7jtxyB/JGbu5XZ4Q2KqQmi00eFy5tBNlvztq6GZJ4tQI4DmLfeOONniyM4311e9111+nE9gwHmWnr8yg36oEncWvqGNwclIhtFVWylWMlJPl2PPryYk5OkiMSkYyZRbNg49FDsuJEdkkpNpudSRqREYlJFkZw1bdMBFctvBphtCqWlMLxAv0jykVUpQWNEFz22HhnskqyH90XcpPltikShltxhfDU3p279sjuSgmbIViuln+bX/jrr7/eo9VuU0fmxt2sXy/gOhoq19c7orJGo0/ySPjH5eLMZZEHUUKSb8P6rw5wIpJFFhlZKIROVtlgtMr6mzHUTHkjistNQF2CFPdOsPNoQkjkpMmnSTDLkoVHGyWZ1MqJFhPbZ7FxK80JzMlt4X+c3Nxywyu5Vc2tyhOSJaokqfzuJHdfsk51mvXIHi19B7Q6u40zwbVolBzR3lB6TZ+h7RAePsNj+9TzXNuq1u9tBFHPv+GGG1wlggNqx23juXM7QVuXu+Jmf+PgF5+LgNRR6BKZjGM1Im7sGoLz3IKKMsHYlohitcoWl0cHGWF+NJgx+7UFOHzGiGmPv4zKUzWc4OQOtNM5gpGRzAKzZJItMWR/s1HpCLxOVheXPfBMXqsiT7z5ubUWnOo32Gy8qB3PqmxZHxvOLHiL+rjdEM4dWZyIpSGCJ8AdWdxMWH1BPeJo29rGByL60n51P9VF0szL96vXLvV8zbnNn5cEp96OXgn5iB48BruPVXMLfoVZTT6BhMAtIhHbZJJD27Q/LC0Fk596CvPffQ/dIgegV0wC/jpvgez3Zj3Bysw9kZx81UZJwGUlJG7goXtJ8V1LnIAUxidJw4uPJPbk61atuPogBW2ps4yYUIBqE9fzG9nHt2vShfIMVwvo1nK7ErMhQmm1ORXVirmZtHqFq+VW26hufZRHjs90IZ/TMW4mzA3Wqe2w7jqPy7bx2Lzr8IddwrPQPWow16h8SFeJSDKEEpdoImmT3xs5tQBd44LxVdUerDv4MdZVbMXwP09B28hIbD5QyV2BlPlHuSZ0ruqtUCeaJqku/0OVM1yvK3kjKtGJ/EZIXgM42iCOw4IzIU91ELnpuwQPzEJYch6NHHb2mS8wC/6bJl0sDzeooZvqut+nGb8HqGRwseL14I4w7tqu7vcic1w7gfY4fq7rRNlbXWrxoKFbxmqriMqahJ7Rw5jOptxrkbv8DArxeIKSIA/t02e/iL3VZ/BtbSWW7V2JJXtKsPTAKqw/8SVGPTMTN4XFofSDHfx8q12eLDLjLHs/yGKLokw8ZdJJUU4bnLP+XMntC8GJ2Gp+ifpwBH2OVYlQbvx6P3r2S0fPqGR88c0hSv9+WpKk/2nWRWtT37XnybfthkRNumHaod9LPV5lh2un8zSSeNDrTp/jOtJ4a1dDnU5bR2PmFh4RkDQR7YJy5EmY3c4stsA9F+qkkEizaes2/M6vJ6oYZYp3lqFobzGKD5Vi8cGlWHpkDdYe+wp+CZkIThou+6sZOevyUJomNbwFbzwd71qoMw0adjeCknKRO+4BPkKxPjOuWRetDvUI582aN/VztPV60tyucsMDaZ2G/Qba56hDndSq/zdWKrhOZt2139cO5zMC+g2BX787EJk+Uc62Y6aWQunkuTDaTNwFSOQIjBmAac8/i5W7PkJReSlKK5eisGIJio8vx6L9hVh3YitmLijETUED+FMxtZJNliQ2qcnkbmpncJ2ckmz54PPd6BU/FP4xGbxdkl38c7MunIcborXOLezyc+f1aPC4BiyfO89JPWgJ3cbN92ts+334TFdiN/26BfTPhH9EOrJH3seHbzkAwiZ6og1XGMnVIX78lCcQlJCGc+yIsj1rUXpoGQoPF2JRxVu8FB9bjMX7VuCFlSvhF5fF80vUh4jVCGNrFnJb7jzwHboPGI724RmoPHWGnOx3NfnCucD1ptGN8dknWwdPFr8eqRqo293x9Y5RJ4VkfT1ZR61u10xEmwRvkVvtvhYxCOHJuegVk46J059xTO4om07Ww7IuJgt39OQF/LZLKHb9UI31Bz/F0m/LUFxRgpLjJVh8rAhFx4sYuYvwztH3MeutQv6cIyVg1fIJqdBsL0hLFIpSkhsyKG0cOkQOwftbvjgPyZbd5ItXHw6yeJnEeYS7vBRXUniTES7EcDv0u/N1u6vLxaXXXIngrf31XJ+NcHU6o2DWq+gelYnYQTmOKOIlmx1XJKa3IcpJ/hbZv037IlNvZ1YbWHd4M5YdWMYkyTIs3LcQi48sxpIjxSipWI73jn+FmNvGIjbnT9xymwCf0lV/jkKjx5krAgKZ9OoQNQxf7tn/oyRauzTjZrnCrbVtTh1agms9El7q1lpjTwTxVV446e0mfB+nurSdys3I49SJmvR5jGf/tfnrbz7tHJGBHv1zcKKqhk/4aoU6P7RBCSBamFDlIXZ20rRn5qDvkKE4y/as2r8BZYfWY9WxjVhesQ4bTm7FmopPkTN1MrrHZiEqbRS32pcFm+z+a0QQ5qrJEtaePUerEJx+D/43OB0XrWIhe/e6ZtysejemiRMhd9LD7THeyKiVNB4mfPU6n6d2kl9d27maakXdyTVlNHBql3qcDxNcz2A8+8PbZavRJykfYekjYbBwrwF33V1gUuSiJOdkkzyhkDs5hWkyePqKFf7RA+DfPwGvlr2D+e+vxWurV2D63NcweHIBOkUm4qbe0cifMA2XJfkZS3qSxq7kk7Q2uelrvl60Cp2icxGTO4kkSmJTbpYHuBKqMTfHcWM14Wa39WuPbagdLsUBrRfFF6vtKhN8/D716nFJEvPYLi8RXt8wv6gUQcnDEMgIzid8djksblBC5LWKpSPLTa48s/JQAhF80p+fQfugGLQNjMAfA8PRMTQenUMTkTr8fixd96WSNEWZefTQgACzxeZ40Le1iM2XjWDtmvDQU+jCRqx/lGw4zr53+ybeLFc4WW2N9fTpXDfaul7dLvsbJH9Dmta1eCCQ04TOhzSBhlAvCuppIqm18Eonbzoob7tnXB7mLlnPdLYcUeRRPjXwYavLj+YBElEp0HQEjYwxKMESrq+VpCme0SeAl8bkhzSlqEs7WKW69Fc1HG9gbwy98170iEzBtKdepfa/bW25/BK34WNfz1WttTuL7DoSNOBBqKdV6TxRFNtBeehb2zlcCOcED16NJpNbm/ykzgUkSequPcZNxLV55M4dex/T3Fnwi87Ey2++y7WxXUlz5Zl4RF6LpDzpDjlCSQRlpKWsPZMyYXSaNPLIopyqygtFHBuZ+NTUopJZ3aqdUh11ut4aj94xg/DTFeGUreUkSbMDNe7cftq02DZtfHeNuXYydRTx0TfuJFtcMvKaDNfP9qCtW0L+OGN0wQx0DRvEbnwapj7xMk5WG/hzWBK3fJISulZceYKsnelxMp6WqlpyxapzktFx6h+z3haxzuI3m8AeEqvUQI12MR41IkkPVhjt8nyC1lx5eWEpheifY7tabCKpzfVooqvMdTjmxTUzzhdya4nsmmjl0mG8tsUleNMc1COv9rup7WxuWoJbzF30DgKjs+EfnonezIqbGYmNJpucG81dhKJcREU30xM5jLicVO7IS6Tm+2Wrb5Q0cuUqkpt7euwK0ZUl23jylyjPIfLHTaFj9rK3/thiF69lJl2eJlOO1w3JCHd1aYtrXV7a6CQfNOc0B/W+h2u7fAxONR1po2cgYOBIbuUEhdgUobRJIi9qYpOFSxIzz9HmFlxJcHIQzi4Xh0X1kdyqlPBUHOR2Ibn2c/iSyhY5+KSuY0il6ooFe46cPssIH9fiF07HLx+xOZPgF5OLS6JM7MuCXV6ugUhjFR1ZfXWa26xsbc4WVSG3TDw5KmhsiUBOA+QmKUJP4atzACJ6waOzEBQdj4GZuUTww+y7DLI3sKKWjv+niE0bxn/L5qxNXuNPXdySk1KQc7K55hbqAjKy5bbVWV47HNLFYeU5EeWlILyF4B2TPw/Fldxara0+r0kEP3HuMnr1jUGvsP5YtfFT8rl/zfb1b+1rrKOVENQ/DcGx6fICl3aZKHIOtcQTjri3Q/V3C6pLUCGtVlqIziuxquRWJ5fNlSXqApiqJVfJbVBGmyOnL6BbSDSCogZi1MT76b2P2HfpZ9Et9q8Taz/ZbukVzcgdn41LUt0qUhaRppF2nq6qXTrNaK9z/dUqj3DJr8V6bjm+mI5d9j2bFF+6UVlBSn2owCzYHZmI/GEGwc4Lnatdh8RiF3g7qPCRRHnS/pLNyjvltgM/oF/6GPToOwgZw8dSB81mx+i/k/NrR+jAHHQJHYhvKs/WyRJ6at1ilNciUaw25Z9YlEfP1GXLKHCiPpRL79E6f6rMUBbCUQgvOVx19D8dpy69wMlsE3ixabS5gZlpdckGfpzFJi+TLMod5wojPLW14sdz6BAYC/++aSiY+VLLz7Z1/OciKnkYiOBxGXegRvELqyTUam2+bANFAUXJQUo5d0QO/Fhtdu4j5+uMWAVHQIjeo05iMlvr3ud12Rwa3rG2n70uiUsNIPGAjCApS6ux/TbFm8POozyWUZMfREBUCsYWPKYTW4cz1m/ZLfgxyx3YL9URVlcjj2ZJszaJXZYoaq4IEd2kWTLYsX4JZAJSEGXXvkrsrzyBQ0e/r1tmQUNanj8u1hFcu6ClWYluOia0ohKUYVvy6qiuvqB+SfAPjtKJrcM9Pt91+NmQ/ql46OmX8OW+ozjPiHnBLBNVUCwvWWCuezUkVn86hEi279RlzF2yFknDJ6J3fC66RQ9Gh7B0UHqtf780/vT5us/K+ZqARiVJy6rIFpIkNALQmoO0gpVq8enzBEX2mJVgTY3yqw0nL0pIyRuLxMwR2LnvYFZrX0Mdv3D0iU7CLQERiErJxmg23M9kZP/XkpWo/K4KFcdO4fsfzmLNxi14ce6/MOuvr2H8lMdw/8zn0S2M1voeyH8ir3N4OiIy70J09gTcNuVZjCiYjZ7xOYzkSejSNxGJw8biL3MWYNfhk/I6JzY4fkHBorgULcryw1RsisWuscDxGzof7ziELkHx6B0+SLfYOnzDc3MXYvS9D8M/LA5+oTHwY0TvHhQNv1vjOYF7x6Sha3A8OgX0Z8cMQMeAaHQKjEFMSi4G3z4Bj85+FUdO1fgz0gaw0lZb9wdflf+YP/ZedOgTweqLRe+oREye8TR2Hj7N1zpR1wBXA0lGZWQw2OtGieM/nceg3NvQqU8k+vRNRsFDz+nk1uE7GLmuul+YkfcaVjJffONtdO8bjx7hCaBfSaO0VOpAQ8dNw+j7H0P+hOnyrwwHR6NnaBSSsnJRsmqdTmgdv2wwg3wD09J3MklSvnrjVkydORsDs0eiT/9MtGWSo11IMjpHZ+OWkERk3T4Waz/cQha9JROfdOi4emAyuwcjeY7gImEIa7buRcnGbdj3w5Xu9D/rBDf+7A3UoaM5sLdcfrUOHTp06NChQ4cOHTp06NChQ4cOHT8jaB0UVlr0N4V06GhVMEJfz0oHVoazko5f0NNN/wYV+1KRa3imowAAAABJRU5ErkJggg=="style="width:183px; height:66px;display:block"></a></div><br/><p style="height:2px;background-color: #00a4ff;border: 0;font-size:0;padding:0;width:100%;margin-top:20px;"></p><div id="cTMail-inner" style="background-color:#fff; padding:23px 0 20px;box-shadow: 0px 1px 1px 0px rgba(122, 55, 55, 0.2);text-align:left;"><table style="width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse;text-align:left;"><tbody><tr style="font-weight:300"><td style="width:3.2%;max-width:30px;"></td><td style="max-width:480px;text-align:left;"><h1 id="cTMail-title" style="font-size: 20px; line-height: 36px; margin: 0px 0px 22px;">[DynamicIP-Notice]</h1><p id="cTMail-userName" style="font-size:14px;color:#333; line-height:24px; margin:0;"><span>Your current public ip address is :<strong>${current_ip}</strong>.</span></p><dl style="font-size: 14px; color: rgb(51, 51, 51); line-height: 18px;"><dd style="margin: 0px 0px 6px; padding: 0px; font-size: 12px; line-height: 22px;"><p id="cTMail-sender" style="font-size: 14px; line-height: 26px; word-wrap: break-word; word-break: break-all; margin-top: 32px;">Sincerely,<br><strong>${device}</strong></p></dd></dl></td><td style="width:3.2%;max-width:30px;"></td></tr></tbody></table></div><div id="cTMail-copy" style="text-align:center; font-size:12px; line-height:18px; color:#999"><table style="width:100%;font-weight:300;margin-bottom:10px;border-collapse:collapse"><tbody><tr style="font-weight:300"><td style="width:3.2%;max-width:30px;"></td><td style="max-width:540px;"><p style="text-align:center; margin:20px auto 14px auto;font-size:12px;color:#999;">如非本人邮件,请忽略!</p><td style="width:3.2%;max-width:30px;"></td></tr></tbody></table></div></td><td style="width:3%;max-width:30px;"></td></tr></tbody></table></div></div></span></div></div></div></includetail></div></body></html>"""mail = MIMEText(Template(mail_text).substitute(params), 'html', 'utf-8')# 显示发件人mail['From'] = _format_addr(sender)mail['To'] = _format_addr(receivers)# 设置邮件主题subject = '[DynamicIP-Notice] {}'.format(params['current_ip'])mail['Subject'] = Header(subject, 'utf-8')try:smtpObj = smtplib.SMTP()smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号smtpObj.login(mail_user, mail_pass)smtpObj.sendmail(sender, receivers, mail.as_string())logging.info("邮件发送成功,最新ip为{}".format(params['current_ip']))return 0except smtplib.SMTPException as ex:logging.error("邮件发送失败{},".format(ex))return 1if __name__=='__main__':device = os.environ['COMPUTERNAME']params = {"current_ip": get_current_ip(), "device": device}record_ip(params)send_mail(params)
2、创建bat文件启动脚本
"D:\Program Files\Python310\python.exe" D:\Code\Code\sendWANIP\sendWANIP.py
3、Windows任务计划
添加windows任务计划,每隔10分钟执行bat文件获取公网ip
注意:
- “程序或脚本”中写的可执行文件不要被引号包裹
- 起始位置必填,为可执行文件所在的目录否则无法执行
4、shell脚本
路由器上跑的shell脚本,百度得来的出处忘记了,有需要的可以参考
#!/bin/bash#SMTP配置 #(例子)
#SMTP服务器#smtpserver=smtp.126.com
#邮箱账号#fromaddress=xxxxxx@126.com
#邮箱密码fromaddresspwd=xxxxxxxxxxxxx
#收件人信息#toaddress=xxxxxx@qq.com 英文逗号分隔#SMTP配置
smtpserver=smtp.163.com
fromaddress=xxxx@163.com
fromaddresspwd=xxxxxxxxxxxxx
toaddress=xxxxx@163.com#文件路径,最新ip写入lastwanip.txt
iptxt="/etc/storage/lastwanip.txt"
#文件路径,邮件正文,写入mail文件
mailtxtpath="/etc/storage/mail.txt"#获取WANIP接口
newwanip=`wget http://members.3322.org/dyndns/getip -q -O -`#如接口获取不到ip,本次取消发送
echo $newwanipif [ x"$newwanip" = "x" ]; thennewwanip=`wget https://ifconfig.me/ip -q -O -`echo $newwanipif [ x"$newwanip" = "x" ]; thenexitfi
fiif [ -f $iptxt ]; thenoldwanip=`cat $iptxt`
elseoldwanip="0.0.0.0"
fi#对比上次IP,如相同则不发邮件,否则发送
echo $oldwanipif [ "$newwanip" = "$oldwanip" ]; thenexit
fi
if [ -f $mailtxtpath ]; thenrm -f $mailtxtpath
fi#配置邮件标题,修改“wanip”和在${newwanip} 后面加参数
#不能修改代码格式,行与行之间必须空格!
cat <<EOF >>$mailtxtpath
Subject: WANIP:[ ${newwanip} ]路由器型号 = RedMi AC2100IP= ${newwanip}okTo: $toaddress
From: $fromaddress
EOF#调用系统邮件服务
sendmail -f $fromaddress -t $toaddress -S $smtpserver -au$fromaddress -ap$fromaddresspwd < $mailtxtpath#缓存最新ip地址,写入/etc/storage/lastwanip.txt"
echo $newwanip > $iptxt#打印系统日志,调用logger接口
logger 发现WANIP变化,外网IP= $newwanip
logger ($fromaddress)已邮件通知($toaddress)