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。可以自行研究使用

你可能感兴趣的:(python3学习)