linux - 从python获取IP地址

标签 linux python-3.x ip

<分区>

我正在尝试获取与网络接口(interface)关联的 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 :

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

通过名称获取主机:

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

关于linux - 从python获取IP地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606440/

相关文章:

Linux 机器不支持许多 Unix 命令

c++ - 如何修复 OpenGL Superbible 第 6 版书籍提供的 CMake 文件

javascript - 我的 Javascript 和 Python 代码是否因为指数或其他原因给出了不同的答案?

c# - 如何使用 BitShifting 将基于 int 的 IP 地址转换回字符串?

linux - 树莓派没有IP地址?

sockets - ai_socktype 不支持 Servname

ruby - 检测 IDLE 处理器 ruby​​ 的数量

linux -/proc/net/wireless 中的 "Status"字段

python - 无法进入下一页

parsing - Python3 - 为编译器创建扫描器并在测试时出错