定时动态获取公网ip并传送至ftps服务器

简介:

一、需求分析

由于之前家里上网是拔号上网,获取是公网ip,绑定花生壳动态域名(账号),再通过端口映射即可轻松在任何有网络的地方远程连接到家里电脑H,最近花生壳要求实名认证了,我去,这么烦人,想想原理,和已有的资源,自己动手用python写了一个;

思路:

通过在要映射访问的电脑H(home)上用python动态获取出口公网ip,定时10分钟获取并上传到远程ftps(ftp + ssl)服务器上,想要连接H的时候,到服务器上获取公网ip(可以通过脚本自动拉取,也可以需要连接的时候上去看),再远程连接H电脑。


二、获取公网ip并自动上传脚本

1、脚本getip.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#coding:utf-8
import  urllib,urllib2
from ftplib  import  FTP_TLS
import  os
import  re
import  sys
 
def getIP():
     url =  "http://httpbin.org/ip"
     header = {
         "User-Agent" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"
     }
     req = urllib2.Request(url=url, data=None, headers=header)
     response = urllib2.urlopen(req)
     html = urllib2.urlopen(req)
     content = html. read ()
     myip = re.search( '\d+\.\d+\.\d+\.\d+' ,content).group(0)
     return  myip
 
def GETIP(event):
     myip = getIP()
     if  myip:
         content.SetValue( "本机公网ip: %s"  % myip)
     else :
         content.SetValue( "error" )
 
 
if  __name__ ==  "__main__" :
     myip = getIP()
     filename= "%s.txt"  %myip
     os.chdir( "d:\\" )
     if  os.path.isfile(filename):  #如果公网ip自上次没有 改变直接退出不执行
         sys. exit (5)
     else :
         ip_txt= open (filename, 'w' )
         ip_txt.write(myip +  '\n' )
         ip_txt.close()
         ftp  = FTP_TLS()
          ##此处填写你的ftp用户名和连接端口
         ftp .connect( "Your ip or domain" ,port)
         ftp .login( 'ftpuser' , ftpuser')           ##ftp用户名及密码
         ftp .prot_p()
         ftp .cwd( "ip" )
     
      #download
#    ftp.download("1.txt","1.txt")
#    ftp.retrlines("LIST")
#    fnames = () 
#    upload_file=unicode('/root/ip.txt', "utf8")
 
         upload_file=unicode(filename,  "utf8" )   #windows 上传到ftp
         f =  open (upload_file,  'rb' )
         ftp .storbinary( 'STOR %s'  % os.path. basename (upload_file),f)
         f.close()
         ftp .quit

2、添加计划任务

在H电脑的 控制面板中--计划任务中添加类似如下计划任务如图:

wKiom1ncxGGzM10uAAEgWKmqIPM028.png

注意:我的H电脑是xp,其他的windows系统计划任务类似,Linux也支持,但需要注意脚本中的文件路径修改。


三、带gui的获取ip和上传

1、在之前的代码基础上添加如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    app = wx.App()
     frame = wx.Frame(None, title= "获取本机出口公网ip" , size=(300, 180))
     panel = wx.Panel(frame)
     sBox = wx.BoxSizer() 
     vBox = wx.BoxSizer(wx.VERTICAL) 
     content = wx.TextCtrl(panel,style=wx.TE_MULTILINE |wx.TE_CENTER)
     btn1 = wx.Button(panel, label= "获取" )
    
     sBox.Add(btn1, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
     vBox.Add(sBox, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
     vBox.Add(content, proportion=1, flag=wx.EXPAND | wx.ALL, border=5)
     btn1.Bind(wx.EVT_BUTTON, GETIP)
     
     panel.SetSizer(vBox)
     frame.Show()
     app.MainLoop()

2、运行效果如图:

wKioL1ncVrXxKc5lAAAhrPWSLQA375.png

3、ftps服务器上获取的ip文件

ftps是linux 系统 vsftpd的环境(关于ftp及ftps的搭建见ftp系列 http://dyc2005.blog.51cto.com/270872/1940990

#pwd
/data1/project/ip
# ls -alh
总用量 16K
drwxr-xr-x 2 ftpuser nagioscacti 4.0K 9月  30 07:17 .
drwxrwxr-x 5 ftpuser nagioscacti 4.0K 9月  28 18:24 ..
-rw-r--r-- 1 ftpuser nagioscacti   17 10月 10 13:17 116.226.185.150.txt
-rw-r--r-- 1 ftpuser nagioscacti   17 10月 10 13:22 180.168.251.164.txt
# cat 180.168.251.164.txt 
180.168.251.164


服务器上已经获取了我H电脑所在网络的公网ip,要想在其他地方知道公网ip并连接上H电脑,只要访问ftps服务器获取公网ip就可以了。











本文转自 dyc2005 51CTO博客,原文链接:http://blog.51cto.com/dyc2005/1971138,如需转载请自行联系原作者
目录
相关文章
|
11月前
|
存储 弹性计算 安全
阿里云轻量服务器通用型、CPU优化型、多公网IP型、国际型、容量型不同实例区别与选择参考
阿里云轻量应用服务器实例类型分为通用型、CPU优化型、多公网IP型、国际型、容量型,不同规格族的适用场景和特点不同,收费标准也不一样。本文为大家介绍轻量应用服务器通用型、多公网IP型、容量型有何区别?以及选择参考。
|
11月前
|
弹性计算 安全
如何给一台云服务器绑定多个公网IP?
本文介绍了如何为云服务器绑定多个公网IP,适用于需多个IP地址托管不同应用的场景。以阿里云国际站为例,讲解使用弹性公网IP(EIP)和辅助弹性网卡实现该功能的步骤,适用于ECS实例。
如何给一台云服务器绑定多个公网IP?
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
720 24
|
11月前
|
网络协议 API 网络安全
永久独立IP服务器解析与选择指南
关于“永久独立IP服务器”,这个概念需要从技术和商业两个层面来理解,小编为您整理发布。
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
925 28
|
存储 监控 安全
无需云服务器、无需公网IP,轻松实现门禁系统远程接入与数据同步
智慧园区门禁管理中,贝锐花生壳提供高效解决方案。通过内网穿透技术,无需公网IP即可集中管理多区域门禁系统,保障数据安全传输。采用RSA与AES混合加密,支持权限精细化控制及多维度监控,简单三步实现远程访问,助力园区智慧安全管理升级。
663 7
|
Go API 定位技术
MCP 实战:用 Go 语言开发一个查询 IP 信息的 MCP 服务器
随着 MCP 的快速普及和广泛应用,MCP 服务器也层出不穷。大多数开发者使用的 MCP 服务器开发库是官方提供的 typescript-sdk,而作为 Go 开发者,我们也可以借助优秀的第三方库去开发 MCP 服务器,例如 ThinkInAIXYZ/go-mcp。 本文将详细介绍如何在 Go 语言中使用 go-mcp 库来开发一个查询 IP 信息的 MCP 服务器。
890 2
|
9月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
774 10
|
9月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
851 8

热门文章

最新文章