美文网首页大数据 爬虫Python AI SqlPython小哥哥
Python带你访问动态公网IP下的NAS!

Python带你访问动态公网IP下的NAS!

作者: 14e61d025165 | 来源:发表于2019-05-11 15:01 被阅读0次

项目目标:实现家庭拨号条件下动态公网IP的每日监测,并汇报新IP地址。

项目背景:在家组建了私有NAS,使用黑群晖系统,需要实现外网访问。内网IP地址固定但是外网访问时拨号获得的IP地址并不固定。所以本方法适用于家庭拨号上网没有固定公网IP,又不想使用QuickConnect或者DDNS的用户。

方案思路:对本地路由器设置端口转发。使用群晖的linux系统搭建python环境,用python自带库实现本地公网IP地址的抓取与判断,当公网IP发生变动之后主动发送新IP地址给用户。可以使用邮箱可以使用微信等,本方案使用邮箱作为发生方式。用户便可以使用新IP地址对NAS进行访问。

实施细节:使用SSH登录NAS,下载ipkg包管理器并编译,安装python环境。本地调试代码成功后scp到NAS端,在NAS端后台运行(nohup python ./*.py &)即可。

项目代码:

Python学习交流群:1004391443,这里是python学习者聚集地,有大牛答疑,有资源共享!小编也准备了一份python学习资料,有想学习python编程的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

!/usr/bin/python

-- coding:utf8 --

import urllib2
import re
import datetime
import time
import smtplib
import gc
from email.mime.text import MIMEText
from email.utils import formataddr

使用urllib2库实现对网页内容的访问并正则匹配抓取IP地址

def get_ip():
url = urllib2.urlopen("http://txt.go.sohu.com/ip/soip")
text = url.read()
ip = re.findall(r'\d+.\d+.\d+.\d+',text)
return ip

使用SMTP协议发送邮件

my_sender='XXXXXX@Xmail.com' #输入发送端邮箱地址,发送和接收邮箱可以相同
my_user='XXXXXX@Xmail.com'
def mail(ipAdd):
ret=True
try:

    msg=MIMEText(ipAdd[0],'plain','utf-8')
    
    msg['From']=formataddr(["NasName",my_sender])   
    msg['To']=formataddr(["UserName",my_user])   
    msg['Subject']="NasIP"
    server=smtplib.SMTP("smtp.Xmail.com",25) 
    server.login(my_sender,"********")     # 登录,星号处输入邮箱密码  
    server.sendmail(my_sender,[my_user,],msg.as_string())  
    server.quit()  
    
except Exception:   
    ret=False
return ret

使用time库实现每日定时执行本检查程序,当监测到IP地址变动时发送新IP到指定邮箱

def timer(h=0, m=0):
ipadd0 = []
while True:
now = datetime.datetime.now()
#print(now.hour, now.minute)
if now.hour == h:
ipadd1 = get_ip()
if ipadd0 != ipadd1:
ret=mail(ipadd1)
ipadd0 = ipadd1
if ret:
print("Send")
else:
print("failed")
time.sleep(3600)
gc.collect()

运行主函数

timer()

相关文章

  • Python带你访问动态公网IP下的NAS!

    项目目标:实现家庭拨号条件下动态公网IP的每日监测,并汇报新IP地址。 项目背景:在家组建了私有NAS,使用黑群晖...

  • python自动获取家里宽带的公网IP,并发送邮件

    python自动获取家里宽带的公网IP,并发送邮件 前言 有时候需要在公网访问家里的NAS或者家里的服务器或者连接...

  • 快速查询自己的网络是否为公网IP

    一、什么是公网IP? 公网IP是全球唯一的IP地址。公网IP又分为静态公网IP和动态公网IP,可进入路由器查看连接...

  • frp实现内网穿透

    因为有在外面访问家里 NAS 的需求,群晖自带的动态域名解析访问又太慢。所以需要用内网穿透技术来实现通过其他公网 ...

  • 黑群晖外网访问

    黑群晖外网访问有两种情况,分有公网IP/无公网IP。 公网IP:公网IP是唯一的,拥有公网IP的互联网主机中可以通...

  • python查询公网IP地址、IP地理位置

    python查询公网IP地址、IP地理位置 利用Python查询本机公网的IP地址、以及查询IP的地理位置,使用简...

  • 公网固定ip如何购买?

    现如今由于IPv4资源匮乏,各大运营商分配给用户的都是动态IP~甚至是动态内网IP。这样一来让远程访问NAS、私有...

  • frp内网穿透

    前提: 公司内网搭建了jira系统,为了能够实现外网访问。 目前情况下,公司的路由器有动态公网IP,可以直接在路由...

  • linux网络

    一、虚拟机网络 同级网络才能访问,公网ip只能访问公网ip 桥接:虚拟主机跟你的电脑是平级的,接入本地路由(ip和...

  • frp内网穿透

    说明 有个内网NAS群晖系统,需要在外网访问时,没有公网IP,刚好有个域名和腾讯云的服务器。(200块3年还是不错...

网友评论

    本文标题:Python带你访问动态公网IP下的NAS!

    本文链接:https://www.haomeiwen.com/subject/nrmxaqtx.html