python3小程序之檢測本機公網變化使用郵箱提醒

代碼如下:

import subprocess
import smtplib
from email.mime.text import MIMEText
subp = subprocess.Popen('curl ip.cip.cc',shell=True,stdout=subprocess.PIPE)
subp2 = subprocess.Popen('cat getip.txt',shell=True,stdout=subprocess.PIPE)
new_ip=subp.stdout.readline().decode().strip()
old_ip=subp2.stdout.readline().decode().strip()
if new_ip == old_ip :
    f = open("getip.txt","w")
    print(old_ip,file=f)
else:
    mailserver = "smtp.qq.com"
    usersname_send = '[email protected]'
    password = 'qqqqqqqq' #授權碼
    username_recv = '[email protected]'
    mail =MIMEText(new_ip) 
    mail['From'] = usersname_send
    mail['To'] = username_recv
    smtp = smtplib.SMTP_SSL(mailserver,port=465) #qq的smtp服務端口是465
    smtp.login(usersname_send,password)
    smtp.sendmail(usersname_send,username_recv,mail.as_string())
    smtp.quit()
    f = open("getip.txt","w")
    print(new_ip,file=f)

解釋:

這裏我的思路很簡單,使用python執行系統命令,判斷ip是否相等也就是公網ip有無變化,有變化就發郵箱並且存入指定文本,如果沒變化就把舊地址繼續寫入一遍

主要記住幾個點:

一:

去除輸出字符中的轉移字符
我輸出字符的時候是這樣的:b’192.168.1.1/n’,去除字符使用.decode().strip()即可

二:

執行系統命令
我看了下,python執行系統命令有好幾個方法,有一篇優秀的帖子Python3 執行Linux Bash命令
,大家可以查閱。我這裏使用subprocess底層調用Popen執行系統命令,很好用,很舒服

三:

發送郵件我選擇的比較簡單的一種
沒有發送附件等那些要求,只要對應的郵件服務支持免費開啓smtp服務就可以用。還有更簡單的一兩句話就可以發送郵件的是一個github項目,叫做yagmail。可以自行研究使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章