获取 127.0.1.1 而不是 192.168.1.* ip ubuntu python

Sma*_*pha 4 python sockets python-3.x python-sockets

我是python的新手。我想获取系统的IP地址。我在局域网中连接。当我使用以下代码获取 ip 时,它显示 127.0.1.1 而不是 192.168.1.32。为什么它不显示 LAN ip。那么我怎样才能得到我的局域网 ip。每个教程仅以这种方式显示。我还通过连接移动热点进行了检查。尽管如此,它显示的是相同的。

import socket    
hostname = socket.gethostname()    
IPAddr = socket.gethostbyname(hostname)    
print("Your Computer Name is:" + hostname)    
print("Your Computer IP Address is:" + IPAddr)    
Run Code Online (Sandbox Code Playgroud)

输出:

Your Computer Name is:smackcoders
Your Computer IP Address is:127.0.1.1
Run Code Online (Sandbox Code Playgroud)

所需输出:

Your Computer Name is:smackcoders
Your Computer IP Address is:192.168.1.32
Run Code Online (Sandbox Code Playgroud)

小智 11

我的 raspi 也遇到了同样的问题。

host_name = socket.gethostname()`
host_addr = socket.gethostbyname(host_name)
Run Code Online (Sandbox Code Playgroud)

现在,如果我打印 host_addr,它将打印 127.0.1.1。所以我发现了这个:https ://www.raspberrypi.org/forums/viewtopic.php ? t = 188615#p1187999

host_addr = socket.gethostbyname(host_name + ".local")
Run Code Online (Sandbox Code Playgroud)

它奏效了。


san*_*ooj 9

根据上面的“/etc/hosts”文件内容,您有一个 IP 地址映射,其中“127.0.1.1”到您的主机名。这导致名称解析获得 127.0.1.1。您可以尝试删除/注释此行并重新运行。


Sat*_*iva 6

如何在Python中获取eth0的IP地址?

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print s.getsockname()[0]
Run Code Online (Sandbox Code Playgroud)