获取 127.0.1.1 而不是 192.168.1.* ip ubuntu python
Getting 127.0.1.1 instead of 192.168.1.* ip ubuntu python
我是 python 的新手。我想获取系统的ipaddress。我连接在局域网中。当我使用下面的代码获取 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)
输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:127.0.1.1
所需输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:192.168.1.32
此解决方案适用于我 Windows。如果您使用的是 Linux,您可以试试这行代码:
IPAddr = socket.gethostbyname(socket.getfqdn())
How can I get the IP address of eth0 in Python?
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print s.getsockname()[0]
根据上面的“/etc/hosts”文件内容,您的 IP 地址映射为“127.0.1.1”到您的主机名。这导致名称解析为 127.0.1.1。您可以尝试 removing/commenting 这一行并重新运行。
我的 raspi 遇到了同样的问题。
host_name = socket.gethostname()`
host_addr = socket.gethostbyname(host_name)
现在如果我打印 host_addr,它会打印 127.0.1.1。
所以我发现了这个:https://www.raspberrypi.org/forums/viewtopic.php?t=188615#p1187999
host_addr = socket.gethostbyname(host_name + ".local")
它奏效了。
我遇到了和你一样的问题。但我在自己的想法的帮助下得到了解决方案,不用担心它使用起来很简单。
如果您熟悉 linux,您应该听说过 ifconfig
命令,其中 return 有关网络接口的信息,并且您还应该了解 grep
命令过滤包含的行指定字词
现在只需打开终端并输入
ifconfig | grep 255.255.255.0
然后点击 enter
现在您将单独获得 wlan inet 地址行,如下所示
inet 192.168.43.248 netmask 255.255.255.0 broadcast 192.168.43.255
在你的终端
在您的 python 脚本中只需插入
#!/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)
这个脚本 return 你的本地 ip 地址,这个脚本对我有用,我希望它对你的 linux 机器有用
一切顺利
我是 python 的新手。我想获取系统的ipaddress。我连接在局域网中。当我使用下面的代码获取 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)
输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:127.0.1.1
所需输出:
Your Computer Name is:smackcoders
Your Computer IP Address is:192.168.1.32
此解决方案适用于我 Windows。如果您使用的是 Linux,您可以试试这行代码:
IPAddr = socket.gethostbyname(socket.getfqdn())
How can I get the IP address of eth0 in Python?
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80))
print s.getsockname()[0]
根据上面的“/etc/hosts”文件内容,您的 IP 地址映射为“127.0.1.1”到您的主机名。这导致名称解析为 127.0.1.1。您可以尝试 removing/commenting 这一行并重新运行。
我的 raspi 遇到了同样的问题。
host_name = socket.gethostname()`
host_addr = socket.gethostbyname(host_name)
现在如果我打印 host_addr,它会打印 127.0.1.1。 所以我发现了这个:https://www.raspberrypi.org/forums/viewtopic.php?t=188615#p1187999
host_addr = socket.gethostbyname(host_name + ".local")
它奏效了。
我遇到了和你一样的问题。但我在自己的想法的帮助下得到了解决方案,不用担心它使用起来很简单。
如果您熟悉 linux,您应该听说过 ifconfig
命令,其中 return 有关网络接口的信息,并且您还应该了解 grep
命令过滤包含的行指定字词
现在只需打开终端并输入
ifconfig | grep 255.255.255.0
然后点击 enter
现在您将单独获得 wlan inet 地址行,如下所示
inet 192.168.43.248 netmask 255.255.255.0 broadcast 192.168.43.255
在你的终端 在您的 python 脚本中只需插入
#!/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)
这个脚本 return 你的本地 ip 地址,这个脚本对我有用,我希望它对你的 linux 机器有用 一切顺利