2012-07-18 19 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