from subprocess import Popen, PIPE
defgetIP():
p = Popen("hostname -I", shell=True, stdout=PIPE)
ip = p.stdout.read()
ip =str(ip, encoding="UTF-8")# 发现在获取时,后面会有回车,去除后面的空格
ip = ip.strip()print(ip)return ip
if __name__ =="__main__":
getIP()
在LINUX下可以看到输出
10.170.11.11
自动发送邮件脚本
现在我们已经获取了IP地址,只需要对IP地址进行判断,然后发送到我的邮箱就可以了
直接上代码:
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
defsend_mail(user, passwd, receiver, message):try:# 邮件内容
msg = MIMEText(message,"plain","utf-8")# 寄件人
msg["From"]= formataddr(("sender", user))# 收件人
msg["To"]= formataddr(("receiver", receiver))# 主题
msg["Subject"]="this is a test mail"# smtp服务器地址和端口,不知道的根据自己邮箱查
server = smtplib.SMTP_SSL("smtp.qq.com",465)# 登录以获取服务
server.login(user,passwd)
server.sendmail(user,[receiver,], msg.as_string())
server.quit()print("发送成功!")except Exception:print("未发送成功")if __name__ =="__main__":
user ="XXX4@qq.com"# 发送
passwd ="qXXXzknmmqbgcd"# 密码,这个密码并不是邮箱密码,而是开启smtp服务时服务器生成的密码
receiver ="xxx@aliyun.com"# 接收邮箱
mail ="这是一个测试邮件"
send_mail(user, passwd, receiver, mail)
定时获取IP并和之前的ip进行比较
两个重要的部分都已经完成了,现在只需要写一个定时程序和对比的程序就可以了
import time
import get_ip
import mail
defmain():
ip =""
user ="q.com"
passwd ="bgcd"
receiver ="un.com"whileTrue:# 每60s检测一次
time.sleep(60)
temp = get_ip
if ip != temp:# 如果ip发生了改变,发邮件通知
mail.send_mail(user, passwd, receiver, temp)
ip = temp
main()