上期有提到自己用Python/ target=_blank class=infotextkey>Python编写了检测本机ipv6的小程序,本期就详细讲解一下实现过程,大家也可以在此基础上修改,达到自己的目的
第一步导入需要用到的库
import smtplib
from email.mime.text import MIMEText
import requests
import json
第二步,设置邮箱账号信息,这里用一个txt文件保存,名称定为“email_info.txt”,方便后期修改信息。username和send_mail都是发件箱的邮箱地址,receive_mail也可以设置成发件箱地址或者其他邮箱地址。mail_host和port和发件箱服务商有关,我这里直接以QQ为例,其他邮箱大家自己查询研究一下。mail_subject是指邮箱的标题,大家可以自己编写。最关键的password并不是指QQ邮箱密码,而是指POP3/SMTP服务的授权码,大家可以在QQ邮箱中设置上开通。
相关python代码如下
# 账号设置
f = open('email_info.txt', encoding='utf-8')
f_text = f.readlines()
f_list = []
for j in f_text:
f_list.Append(j.split('=')[1].strip())
username = f_list[0] # qq邮箱用户名
password = f_list[1] # qq邮箱授权码
send_mail = f_list[2] # 发送地址,可以同上用户名
receive_mail = f_list[3] # 接受邮件的地址,可以用发件箱,自发自收
mail_host = f_list[4] # QQ邮箱的mail host
port = int(f_list[5]) # 设置端口号
mail_subject = str(f_list[6]) # 设置邮件主题
f.close()
第三步,生成一个存储每次查询到的ip地址的文件,名称为“run_log.txt”,下面为示例图
相关python代码如下,主要是通过http://ipw.cn这个网站进行查询,下面代码直接请求的是网站的json地址
# 查找上次的ip地址,作为是否要发邮件的判断条件
f1 = open('run_log.txt')
former_ips = f1.readlines()
former_ip = former_ips[-1]
f1.close()
ip = ''
for i in range(3):
# 获取IP地址
url = "https://6.ipw.cn/api/ip/myip?json"
response = requests.get(url, timeout=20)
if response.status_code == 200:
ip = json.loads(response.content)['IP']
break
第四步,设置发送邮件,相关代码如下
if (ip != '') and (ip != former_ip):
# 保存记录
f2 = open('run_log.txt', mode='a+')
f2.write('n'+ip)
f2.close()
# 内容设置
mes = MIMEText(ip, 'plain', 'utf-8')
mes['Subject'] = mail_subject
mes['From'] = send_mail
mes['To'] = receive_mail
# 发送
server = smtplib.SMTP(mail_host, port)
server.ehlo()
server.starttls()
server.login(username, password)
server.sendmail(send_mail, receive_mail, mes.as_string())
server.quit()
第五步,通过python的pyinstaller将代码打包成一个文件,pycharm可以在Terminal中输入“pyinstaller -F -w ip_reporter.py”进行打包,成功后,可以在名为“dist”文件夹中找到exe文件,如下图。将“email_info.txt”和“run_log.txt”放在ip_reporter.exe同文件夹下,就可以双击运行ip_reporter了。
最后一步,设置任务计划程序,新建txt文件,输入以下代码。最后将文件的后缀txt修改成bat,把文件放在第五步三个文件同文件目录下。并将这个文件夹放置在C盘任意目录下。以管理员权限运行bat文件,最后可以看到任务计划程序中就可以看到创建的任务计划,这个计划开机自启,并每5分钟会启动一次,每次启动会运行程序,如果发现ip与上次的ip发生了变化,就会自动发送邮件。手机接收的效果如图。
@ECHO OFF
REM https://msdn.microsoft.com/zh-cn/library/windows/desktop/bb736357(v=vs.85).aspx
SET RUNCMD="cmd /c 'cd %~dp0 & ip_reporter.exe'"
SET RUN_USER=%USERNAME%
WHOAMI /GROUPS | FIND "12288" > NUL && SET RUN_USER="SYSTEM"
ECHO Create task run as %RUN_USER%
schtasks /Create /SC MINUTE /MO 5 /TR %RUNCMD% /TN "IP_Reporter" /F /RU "%RUN_USER%"
PAUSE
本期内容结束,本次方法只限用于ipv6,ipv4地址需修改查询ipv4地址的网址,大家可以自行研究。欢迎留言、点赞、收藏、关注。