【问题标题】:Get IP address from python [duplicate]从python获取IP地址[重复]
【发布时间】:2018-07-14 08:34:12
【问题描述】:

我正在尝试获取与网络接口关联的 IP 地址,而不在 Linux 中产生额外的进程:

def get_ip_address(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(), 0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15].encode('utf-8'))
        )[20:24])

但总是出现这个错误:

struct.pack('256s', ifname[:15].encode('utf-8'))
OSError: [Errno 99] Cannot assign requested address

我该如何解决这个问题?

【问题讨论】:

  • 当我的接口未分配 IP 地址时,我收到此错误消息。你测试哪个接口,/sbin/ifconfig -a 报告什么?
  • 如果接口没有IP地址,你想要什么结果?

标签: linux python-3.x ip


【解决方案1】:

将主机翻译成ip:

import socket
print (socket.gethostbyname(socket.gethostname()))

按名称获取主机:

import socket
print (socket.gethostbyname("www.goole.com"))

【讨论】:

  • 如果我有多个网络接口而没有任何互联网连接怎么办?
  • 第一条评论返回127.0.0.1 ....
  • 它总是将输出返回为“127.0.0.1”。但我需要公共和私有 IP 地址。
  • 您的互联网连接正常吗?
猜你喜欢
  • 1970-01-01
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 2013-08-19
  • 2014-12-08
  • 1970-01-01
相关资源
最近更新 更多