首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python netifaces给出了两个地址

Python netifaces给出了两个地址
EN

Stack Overflow用户
提问于 2018-09-20 00:55:29
回答 1查看 0关注 0票数 0

我试图获取我的机器的IP地址和广播地址,经过大量的研究netifaces工作正常,但问题是IP地址打印正常,但当我想要广播地址时,它给出了docker广播地址以及'lo '广播地址,但我只想'lo'广播地址,我不知道如何只获得与'lo'相关的广播地址。请帮我一些想法。此外,我不确定我是否曾提到只想要'lo'广播地址,但它也给了码头工人广播地址。

码:

代码语言:javascript
复制
import netifaces
interfaces=netifaces.interfaces()
for i in interfaces:
   if i=='lo':
   continue
   iface= netifaces.ifaddresses(i).get(netifaces.AF_INET)
   if iface != None:
      for j in iface:
        bd=(j['broadcast'])
        print(bd)

输出:

代码语言:javascript
复制
192.169.xx('10'广播)
175.17.xx('docker'-broadcast)
EN

回答 1

Stack Overflow用户

发布于 2018-09-20 10:46:11

你为什么要试着去?这通常是本地环回,并且始终具有127.0.0.1。我刚刚在CentOS环境中做到了这一点。如果您使用的是Windows,只需调整“ifconfig adapter-name”字符串...可能使用“ipconfig / all”或其他内容。

代码语言:javascript
复制
#! /usr/bin/python
import os
import re

def get_ip_data(ether_adapter):
    ip_list = []
    ip_data = os.popen("ifconfig " + ether_adapter)
    for line in ip_data:
        match1 = re.search(r'inet\s+(\d+.\d+.\d+.\d+)', line)
        match2 = re.search(r'broadcast\s+(\d+.\d+.\d+.\d+)', line)
        if match1:
            ip = match1.group(1)
            ip_list.append(ip)
        if match2:
            bcast = match2.group(1)
            ip_list.append(bcast)
    return ip_list


if __name__ == "__main__":
    ethernet_card = "virbr0"
    inet_list = get_ip_data(ethernet_card)
    for element in inet_list:
        print(element)

[root@server Desktop]# ./ip.py 
192.168.122.1
192.168.122.255

在客户端“virbr0”是我的wifi卡的名称。只需将您的wifi卡或以太网卡名称替换为字符串即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档