Forum Programmation.python Obtenir la liste des IPs de la machine locale

Posté par  .
Étiquettes : aucune
0
26
mai
2007
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  . Évalué à 2.

    import socket
    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?" :)
  • # ip addr ls

    Posté par  . Évalué à 0.

    ip addr ls

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.