2012-02-07 3 views
1

В соответствии с заголовком я хотел бы получить IP-адрес DHCP подключаемых устройств.С помощью import.socket, есть ли способ получить DHCP ip вместо этого? или я должен минус один из IP?

До сих пор у меня есть:

import socket 

def getIPAddresses(): 
    addr = socket.gethostbyname_ex(socket.gethostname()) 
    for i in addr[2]: 
     if "169.254" in i: 
      if i != "169.254.0.2": 
       print socket.gethostbyaddr(i) 

if __name__ == "__main__": 
    getIPAddresses() 

По сути, сценарий, что у меня есть два устройства, подключенные где я хочу подключить к устройству, чей IP не 169.254.0.1.

Я думаю, было бы также хорошо, если есть более эффективный способ, чтобы написать это, но моя главная задача будет восстановить DHCP IP в IP вместо (где DHCP IP минус 1)

это будет будем очень благодарны! благодаря!

+0

находится там вы можете получить IP-адрес для MAC-адреса машины, к которой вы пытаетесь подключиться? –

+0

Да, хотя я и не смотрел, как using socket import – kptkev

+0

с DHCP это должно быть более надежное решение для вас. –

ответ

0

В качестве быстрого исправления я просто вычитал один из последних разделов IP.

ip_oct = ip.split('.') 
ip_oct[3] = str(int(ip_oct[3]) -1) 
return '.'.join(ip_oct) 

Я уверен, что его не самое элегантное решение, но это довело число строк вниз, по существу, и сделал это упрощенный имо

Я в основном разделив IP я получить. то с последним множеством я вычитаю один. Затем я присоединяюсь к ним. для возврата к IP.

Просто, чтобы бросить его там, мне не повезло, если я получил gethostbyname_ex для работы через Google Robot Framework, поэтому мне пришлось использовать getaddrinfo для извлечения IP.

Опять же, не является оптимальным решением, как я хотел бы сделать это с помощью MAC-адресов и ARP, но ... У меня не было времени, чтобы понять это и вернуться к нему через несколько месяцев