上期有提到自己用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匹配ipv6(编写检测本机ipv6地址并发邮件的python程序)(1)

python匹配ipv6(编写检测本机ipv6地址并发邮件的python程序)(2)

相关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匹配ipv6(编写检测本机ipv6地址并发邮件的python程序)(3)

相关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了。

python匹配ipv6(编写检测本机ipv6地址并发邮件的python程序)(4)

最后一步,设置任务计划程序,新建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

python匹配ipv6(编写检测本机ipv6地址并发邮件的python程序)(5)

本期内容结束,本次方法只限用于ipv6,ipv4地址需修改查询ipv4地址的网址,大家可以自行研究。欢迎留言、点赞、收藏、关注。

,