2012-07-18 71 views
-5

我建立应用程序需要托管的机器改变IP每30分钟,我可以做到这一点编程没有第三方应用程序?更改我的电脑IP编程

Python是最好,Java是欢迎了。

+3

我想改变你的IP,您需要联系您的ISP。此外,这听起来像是企图绕过黑名单或某种禁令。 – Mysticial 2012-07-18 09:37:55

+6

每次更改IP地址时,您都将丢失所有现有连接。如果你出于安全原因这么做,那是一个坏主意。如果你这样做是为了黑客的目的,这是一个非常糟糕的主意。 – 2012-07-18 09:38:00

+2

哪个平台?哪个发行版? – 2012-07-18 09:38:05

回答

3

如果你想改变你的外部(Internet)的IP地址,如果你的机器是通过DSL连接到互联网,并且您的ISP分配给您一个动态IP,就可以重新启动路由器(实际上是你的DSL调制解调器,但它的内置于路由器,如果你没有一个古老的模型)获得一个新的IP。

通过编程方式重新启动路由器在理论上可以通过发送一个小的SNMP数据包告诉它重新启动自己来实现 - 假设路由器遵循协议并正确解释数据包,并且没有防火墙或其他过滤器阻止SNMP消息你和路由器之间。

在常见情况下,要设置的SNMP OID为1.3.6.1.2.1.69.1.1.3 - 您可以使用任何具有SNMP库的语言来执行此操作,例如,Python的pySNMP。根据您的路由器型号,可能需要不同的OID,或者根本不可能通过SNMP重置。

假设你的路由器的IP是192.168.0.1,并接受默认重置OID,这样的事情应该pySNMP工作:

from pysnmp.entity.rfc3413.oneliner import cmdgen 
from pysnmp.proto import rfc1902 
cmdgen.CommandGenerator().setCmd(
    cmdgen.CommunityData('my-agent', 'public', 1), 
    cmdgen.UdpTransportTarget(('192.168.0.1', 161)), 
    ((1,3,6,1,2,1,69,1,1,3,0), rfc1902.Integer(1)) 
) 
+0

我很确定美国的大多数ISP客户都有动态IP。 – geoffspear 2012-07-18 12:14:12

+0

是这样吗?那么我想我的信息有点过时了。这似乎是静态IP是美国有些普遍几年前(从留言板/ IRC /论坛交流和类似判断),我认为这是至少的方式更常见的在美国有一个静态IP的情况下比在欧洲这里结束了。我会从答案中删除该评论。 – l4mpi 2012-07-18 12:35:46