3
votes

Obtenir 127.0.1.1 au lieu de 192.168.1. * Ip ubuntu python

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)    


6 commentaires

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.


5 Réponses :


-1
votes

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())


1 commentaires

Ne fonctionne pas pour moi: >>> socket.gethostbyname (socket.getfqdn ()) '127.0.1.1'



4
votes

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]


0 commentaires

6
votes

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.


0 commentaires

7
votes

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é.


1 commentaires

Merci c'est exactement ce dont j'avais besoin



0
votes

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


0 commentaires