上期有提到自己用Python/ target=_blank class=infotextkey>Python编写了检测本机ipv6的小程序,本期就详细讲解一下实现过程,大家也可以在此基础上修改,达到自己的目的
第一步导入需要用到的库
import smtplibfrom email.mime.text import MIMETextimport requestsimport json
第二步,设置邮箱账号信息,这里用一个txt文件保存,名称定为“email_info.txt”,方便后期修改信息 。username和send_mail都是发件箱的邮箱地址,receive_mail也可以设置成发件箱地址或者其他邮箱地址 。mail_host和port和发件箱服务商有关,我这里直接以QQ为例,其他邮箱大家自己查询研究一下 。mail_subject是指邮箱的标题,大家可以自己编写 。最关键的password并不是指QQ邮箱密码,而是指POP3/SMTP服务的授权码,大家可以在QQ邮箱中设置上开通 。
文章插图
文章插图
相关python代码如下
【编写检测本机ipv6地址并发邮件的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 hostport = 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_subjectmes['From'] = send_mailmes['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 OFFREM https://msdn.microsoft.com/zh-cn/library/windows/desktop/bb736357(v=vs.85).aspxSET 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地址的网址,大家可以自行研究 。欢迎留言、点赞、收藏、关注 。
推荐阅读
- 强迫症自我检测
- 公安机关|事业单位招聘核酸检测员,开放695个带编岗位,专科生要抓住机会
- 社区免费做的核酸检测怎么查结果 核酸检测10人一组混检多久出结果
- 如何检测空气质量 自己在家检测空气质量的步骤
- 生命|首次发现!英国坠落的陨石中检测到地外水
- 南京江宁医院核酸检测报告?江宁 核酸检测
- 电子产品检测基础知识 电子产品检验标准
- 小箱子的故事道理?一个箱子编写故事
- 华强北|华强北AirPods破解iOS 16盗版检测!你的耳机不是官网买的要注意了
- 石斛能降血糖吗?