Bonjour,
Pour un script, j'ai besoin de la liste de TOUTES les adresses IP de ma machine. Je pensais que : socket.getaddrinfo("localhost",0) me renverrai cette liste; Cela ne renvoit que 3 fois 127.0.0.1 ce qui n'est pas très utile :) [Remplacer localhost par le nom de ma machine ne change rien]
A noter aussi que socket.getaddrinfo("",0) qui d'après la doc de Python devrait fonctionner génère une erreur.
Je précise que ma machine a bien 3 adresse IPs, en plus de 127.0.0.1, dont une attribuée à eth0:0 (des fois que cela change quelque chose...)
Quelqu'un ici connaît-il une solution à ce problème ? (si possible portable Linux/Windows)
Merci
PS: NON!! parser ifconfig -a n'est pas une solution ;)
# presque
Posté par Putifuto . Évalué à 2.
import fcntl
import struct
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
>>> get_ip_address('lo')
'127.0.0.1'
>>> get_ip_address('eth0')
'38.113.228.130'
Maintenant ton problème devient : "comment enumérer les différentes interfaces?" :)
[^] # Re: presque
Posté par syntaxerror . Évalué à 1.
# ip addr ls
Posté par TazForEver . Évalué à 0.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.