[PIPython] Ottenere ip locale.
Andrea Manzini
amanzini
Ven 19 Nov 2004 15:16:54 CET
At 16.31 05/11/2004, Gianmario Salvetti wrote:
>Ciao a tutti. Domanda:
>Sono connesso ad internet con un modem 56k (quindi protocollo di rete
>ppp). Tento di scoprire il mio indirizzo ip con python quindi:
>
> >>>socket.gethostbyname(socket.gethostname())
>127.0.0.1
>
>Perche' mi restituisce l'indirizzo di loopback?
credo sia perche' loopback e' l'unica interfaccia di rete che abbia
associato un nome risolvibile... Cioe' se fossi connesso in rete con una
scheda avente indirizzo e nome fisso, e un dns configurato correttamente,
ti restituirebbe (anche) quello...
Su una macchina multihomed (ovvero con piu' interfacce di rete), quale ip
dovrebbe restituire ?
vedi a questo proposito:
>>> print socket.gethostbyname_ex(socket.gethostname())
che ritorna una lista anziche' una singola stringa ;)
>L'unico modo che ho trovato per ottenere sto benedetto local address, e'
>creare un socket collegandomi ad un sito internet noto sulla porta 80.
>Dopodiche' utilizzo il metodo getsockname per ottenere sto maledetto ip.
>
>s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>s.connect(("www.libero.it", 80))
>ip = s.getsockname()
>s.close()
>
>Probabilmente mi perdo in un bicchier d'acqua, ma sto impazzendo....
>..... spiegatemiiiiiii.....ci sara' pure un modo piu' pulito!!!??!!??!!??
>Un pacato grazie.
non credo ci sia un modo standard in puro python, ma mi piacerebbe avere
una smentita :)
una soluzione che ho trovato io e' "parsificare" l'output di ifconfig (o
ipconfig sotto win32), usare le ioctl o leggere in /proc sotto linux...
Cose sporche insomma :)
--
#!/usr/bin/python
(you,love,me)=('Madein zAr','0-*1+).()-/,-,',len('.signature')<<1)
print ''.join([you[give-me] for give in [ord(er)-me for er in love]])
More information about the Python
mailing list