Je suis nouveau sur python. Je veux obtenir l'adresse IP du système. Je suis connecté en LAN. Lorsque j'utilise le code ci-dessous pour obtenir l'IP, il affiche 127.0.1.1 au lieu de 192.168.1.32. Pourquoi il n'affiche pas l'IP LAN. Alors, comment puis-je obtenir mon IP LAN. Tous les didacticiels ne montrent que de cette façon. J'ai également vérifié via la connexion avec un hotspot mobile. Cependant, il montre la même chose.
Your Computer Name is:smackcoders Your Computer IP Address is:192.168.1.32
Sortie:
Your Computer Name is:smackcoders Your Computer IP Address is:127.0.1.1
Sortie requise:
import socket hostname = socket.gethostname() IPAddr = socket.gethostbyname(hostname) print("Your Computer Name is:" + hostname) print("Your Computer IP Address is:" + IPAddr)
5 Réponses :
Cette solution fonctionne pour moi sous Windows. Si vous utilisez Linux, vous pouvez essayer cette ligne de code à la place:
IPAddr = socket.gethostbyname(socket.getfqdn())
Ne fonctionne pas pour moi: >>> socket.gethostbyname (socket.getfqdn ()) '127.0.1.1'
Comment puis-je obtenir l'adresse IP de eth0 en Python?
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(("8.8.8.8", 80)) print s.getsockname()[0]
Comme pour le contenu du fichier '/ etc / hosts' ci-dessus, vous avez un mappage d'adresse IP avec '127.0.1.1' à votre nom d'hôte. Cela provoque la résolution de noms pour obtenir 127.0.1.1. Vous pouvez essayer de supprimer / commenter cette ligne et de la relancer.
J'ai le même problème avec mon raspi.
host_addr = socket.gethostbyname(host_name + ".local")
et maintenant si j'imprime host_addr, il affichera 127.0.1.1. J'ai donc trouvé ceci: https://www.raspberrypi.org/forums/viewtopic .php? t = 188615 # p1187999
host_name = socket.gethostname()` host_addr = socket.gethostbyname(host_name)
et cela a fonctionné.
Merci c'est exactement ce dont j'avais besoin
J'ai le même problème que celui auquel vous êtes confronté. mais j'obtiens la solution avec l'aide de ma propre idée, et ne vous inquiétez pas, c'est simple à utiliser.
si vous êtes familier avec Linux, vous devriez entendre la commande ifconfig
qui renvoie les informations sur les interfaces réseau, et vous devriez également comprendre la commande grep
qui filtre les lignes qui consistent en des mots spécifiés
maintenant, ouvrez simplement le terminal et tapez
#!/usr/bin/env python import subprocess cmd = "ifconfig | grep 255.255.255.0" inet = subprocess.check_output(cmd, shell = True) inet = wlan.decode("utf-8") inet = wlan.split(" ") inet_addr = inet[inet.index("inet")+1] print(inet_addr)
et appuyez sur Entrée
maintenant vous obtiendrez la ligne d'adresse wlan inet seule comme ci-dessous
inet 192.168.43.248 netmask 255.255.255.0 broadcast 192.168.43.255
Quel système d'exploitation?
Système d'exploitation Ubuntu 16.04
Copie possible de Recherche d'adresses IP locales à l'aide de stdlib de Python
Pouvez-vous coller la sortie du fichier suivant ici? "chat / etc / hosts"
127.0.0.1 localhost 127.0.1.1 smackcoders # Les lignes suivantes sont souhaitables pour les hôtes compatibles IPv6: 1 ip6-localhost ip6-loopback fe00 :: 0 ip6-localnet ff00 :: 0 ip6-mcastprefix ff02 :: 1 ip6-allnodes ff02: : 2 routeurs ip6
Cette ligne "smackcoders 127.0.1.1" provoque la résolution du DNS en 127.0.1.1. Vous pouvez essayer de supprimer / commenter cette ligne et de la relancer.