python3小程序之检测本机公网变化使用邮箱提醒

本文介绍了一种使用Python检查公网IP是否发生变化的方法,并在IP变更时通过邮件通知。利用subprocess执行系统命令获取IP,对比新旧IP,若不同则发送邮件并更新文本文件。

代码如下:

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 = '1@qq.com'
    password = 'qqqqqqqq' #授权码
    username_recv = '1@qq.com'
    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。可以自行研究使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值