2011-02-04 71 views
3

我想使用Python獲取默認網關(內部路由器IP)的IP。我對Python真的很陌生,所以不確定它是如何工作的。如何使用Python獲取默認網關IP?

我知道你可以讓你的機器的IP:

import socket 
internal_ip = socket.gethostbyname(socket.gethostname()) 
print internal_ip 

所以我想它一定是類似的東西?

+0

http://stackoverflow.com/questions/2761829/python-get-default-gateway-for-a-local-interface-ip-address-in-linux/2761952#2761952這看起來像一個可能的解決方案。 – 2011-02-05 00:04:58

+0

@Reiner Gerecke感謝您的回覆,是的,看起來,但它只是Linux。我工作的Windows - 加上我想使用的東西,如果可能的話,是獨立於平臺的。在Windows中有'import subprocess subprocess.call('ipconfig/all')',它會返回所有的信息,但我希望能夠在不同的平臺上使用代碼。 – 2011-02-05 00:15:41

回答

3

在Windows上,您應該使用WMI以及正確查詢對象(例如網絡設備)的查找屬性。下面的Python代碼打印我的Windows 7機器上的IPv4和默認網關地址:

代碼:

import wmi 

wmi_obj = wmi.WMI() 
wmi_sql = "select IPAddress,DefaultIPGateway from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE" 
wmi_out = wmi_obj.query(wmi_sql) 

for dev in wmi_out: 
    print "IPv4Address:", dev.IPAddress[0], "DefaultIPGateway:", dev.DefaultIPGateway[0] 

輸出:

IPv4Address: 192.168.0.2 DefaultIPGateway: 192.168.0.1 

你可以找到更多的細節和竅門在this page上的網絡設備上執行WMI操作。

對於Linux,如this page上建議的PyNetInfo將是一個好方法。儘管在Linux上,您可以通過閱讀其他import os; os.system(...)技巧中的PROC條目來避免依賴附加模塊。

相關問題