Как я могу получить IP шлюза по умолчанию с Python? - PullRequest
4 голосов
/ 05 февраля 2011

Я хочу получить IP-адрес шлюза по умолчанию (IP-адрес внутреннего маршрутизатора) с использованием Python.Я действительно новичок в Python, поэтому не уверен, как это работает.

Я знаю, что вы можете получить IP-адрес вашей машины с:

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

Так что я думаю, что это должно быть что-то похожее?

1 Ответ

4 голосов
/ 26 ноября 2011

В Windows вы должны использовать WMI вместе с соответствующим запросом для поиска свойств объекта (например, сетевых устройств). Следующий код Python печатает IPv4 и адреса шлюза по умолчанию на моем компьютере с Windows 7:

Код:

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

Более подробную информацию и приемы выполнения операций WMI на сетевых устройствах можно найти на этой странице .

Для Linux PyNetInfo , как предлагается на , эта страница будет хорошим подходом. Хотя в Linux вы можете обойтись без необходимости зависеть от дополнительного модуля, прочитав PROC записи среди других import os; os.system(...) трюков.

...