我正在构建需要主机每 30 分钟更改一次 IP 的应用程序,我可以在没有 3rd 方应用程序的情况下以编程方式进行吗?
Python 更可取,Java 也受欢迎。
如果您想更改您的外部(互联网)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))
)