2021-05-31使用python实现宽带内的服务器查询公网ip并发送邮件

问题:
家里宽带开通了公网ip,将个人网站放在家里,设置好DMZ主机和域名解析,即可实现域名访问。但是家里路由器需要定期重启,重启后的公网ip就会变更,需要查到变更后的公网Ip,然后修改域名解析。由于经常出差,路由器重启后无法在外面及时获取公网Ip,虽然使用ddns动态域名服务可以解决,但是需要花money,不想花。

解决思路:
在服务器上使用Python获取公网ip并发送邮件到指定邮箱。然后将此python程序在服务器上设置为定时自动任务,与重启路由器的时间相匹配,这样每次重启路由器后定时任务随后运行,获取最新Ip,发送到邮箱,然后手动修改域名解析地址。
python代码如下(将里面的*替换为你的邮箱、密码等内容):

from urllib.request import urlopen
from json import load


def getmyip(): 
   my_ip = load(urlopen('http://httpbin.org/ip'))['origin']
    #print('httpbin.org', my_ip)
    return my_ip

import smtplib
from email.mime.text import MIMEText
#设置服务器所需信息
#163邮箱服务器地址
mail_host = 'smtp.163.com'  
#163用户名
mail_user = '*****'  
#密码(*替换为你的密码) 
mail_pass = '*******'   
#邮件发送方邮箱地址
sender = '****@163.com'  
#邮件接受方邮箱地址,注意需要[]包裹,这意味着你可以写多个邮件地址群发
receivers = ['*****@qq.com']  

#设置email信息
#邮件内容设置
#message = MIMEText('这是使用Python发送的测试邮件','plain','utf-8')
message = MIMEText('python','plain','utf-8')
#邮件主题       
message['Subject'] = '服务器目前的公网ip地址' +getmyip()
#发送方信息
message['From'] = sender 
#接受方信息     
message['To'] = receivers[0]  

#登录并发送邮件
try:
    smtpObj = smtplib.SMTP() 
    #连接到服务器
    smtpObj.connect(mail_host,25)
    #登录到服务器
    smtpObj.login(mail_user,mail_pass) 
    #发送
    smtpObj.sendmail(
        sender,receivers,message.as_string()) 
    #退出
    smtpObj.quit() 
    print('success')
except smtplib.SMTPException as e:
    print('error',e) #打印错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值