上期有提到自己用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地址的網址,大家可以自行研究。歡迎留言、點贊、收藏、關注。