3
我想使用Python獲取默認網關(內部路由器IP)的IP。我對Python真的很陌生,所以不確定它是如何工作的。如何使用Python獲取默認網關IP?
我知道你可以讓你的機器的IP:
import socket
internal_ip = socket.gethostbyname(socket.gethostname())
print internal_ip
所以我想它一定是類似的東西?
我想使用Python獲取默認網關(內部路由器IP)的IP。我對Python真的很陌生,所以不確定它是如何工作的。如何使用Python獲取默認網關IP?
我知道你可以讓你的機器的IP:
import socket
internal_ip = socket.gethostbyname(socket.gethostname())
print internal_ip
所以我想它一定是類似的東西?
在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條目來避免依賴附加模塊。
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
@Reiner Gerecke感謝您的回覆,是的,看起來,但它只是Linux。我工作的Windows - 加上我想使用的東西,如果可能的話,是獨立於平臺的。在Windows中有'import subprocess subprocess.call('ipconfig/all')',它會返回所有的信息,但我希望能夠在不同的平臺上使用代碼。 – 2011-02-05 00:15:41