【发布时间】:2017-08-28 15:28:31
【问题描述】:
我正在将 bash 代码转换为 python 代码。 我通过 bash 代码获得了自己主机的全局 IP 地址
hostname -I # output -> 19x.xxx.xxx.xxx xxxx:xxxx:....
19x.xxx.xxx.xxx是自己主机的全局ip地址。
我尝试通过
获取python中的全局ip地址import socket
name=socket.gethostname()
id_address=socket.gethostbyname(name)
print("id_address = {0}".format(id_address))
输出是本地主机地址
127.xxx.xxx.xxx
我有办法在 python 中获取全局 IP 地址吗?
【问题讨论】:
-
这是一个有趣的 -I 主机名标志,它似乎在 BSD 或 OS X 上不可用,你能告诉我你正在使用哪个程序吗?如果是这样,我们也许能够确定您需要在 python 中做什么。另外,如有必要,您可以在 python 中调用 shell 命令
-
@jmercouris:感谢您的评论。我正在使用 4.4.0-22-generic #39-Ubuntu。我可以在 bash shell 终端调用“hostname -I”。这是你想要的答案吗?恐怕我无法得到你真正想要的,因为我不是这个领域的专家。
-
这可能会有所帮助:stackoverflow.com/a/30990617/6394138
-
手册页中的
-I标志:显示主机的所有网络地址。此选项枚举所有网络接口上的所有配置地址。环回接口和 IPv6 链路本地地址被省略。与选项 -i 不同,此选项不依赖于名称解析。不要对输出的顺序做任何假设。 -
记住“全球 ip”是一个主观术语,可能是重复的? How can I get the IP address of eth0 in Python?
标签: python