跳转到主要内容

Python ifconfig包装器,适用于Unix/Linux/MacOSX + Windows的ipconfig

项目描述

https://badge.fury.io/py/ifcfg.svg https://travis-ci.org/ftao/python-ifcfg.svg http://codecov.io/github/ftao/python-ifcfg/coverage.svg?branch=master

Ifcfg是一个跨平台(Windows/Unix)库,用于在Python中解析ifconfig和ipconfig输出。它对于提取IP、子网掩码、MAC地址、主机名等信息很有用。

对于没有ifconfig的新版Unix系统,包含了对ip的回退。Windows系统通过ipconfig支持(英文)。

用法

import ifcfg
import json

for name, interface in ifcfg.interfaces().items():
    # do something with interface
    print interface['device']       # Device name
    print interface['inet']         # First IPv4 found
    print interface['inet4']        # List of ips
    print interface['inet6']        # List of ips
    print interface['netmask']      # Backwards compat: First netmask
    print interface['netmasks']     # List of netmasks
    print interface['broadcast']    # Backwards compat: First broadcast
    print interface['broadcasts']   # List of broadcast

default = ifcfg.default_interface()

‘ifcfg.interfaces()’的输出转换为JSON后看起来像以下内容

$ python -m ifcfg.cli | python -mjson.tool
{
    "docker0": {
        "inet": "172.17.0.1",
        "inet4": [
            "172.17.0.1"
        ],
        "ether": "01:02:9d:04:07:e3",
        "inet6": [],
        "netmask": "255.255.0.0",
        "netmasks": [
            "255.255.0.0"
        ],
        "broadcast": "172.17.255.255",
        "broadcasts": [
            "172.17.255.255"
        ],
        "prefixlens": [],
        "device": "docker0",
        "flags": "4099<UP,BROADCAST,MULTICAST> ",
        "mtu": "1500"
    },
    "enp0s25": {
        "inet": null,
        "inet4": [],
        "ether": "a0:88:b4:3d:67:7b",
        "inet6": [],
        "netmask": null,
        "netmasks": [],
        "broadcast": null,
        "broadcasts": [],
        "prefixlens": [],
        "device": "enp0s25",
        "flags": "4099<UP,BROADCAST,MULTICAST> ",
        "mtu": "1500"
    },
    "lo": {
        "inet": "127.0.0.1",
        "inet4": [
            "127.0.0.1"
        ],
        "ether": null,
        "inet6": [
            "::1"
        ],
        "netmask": "255.0.0.0",
        "netmasks": [
            "255.0.0.0"
        ],
        "broadcast": null,
        "broadcasts": [
            null
        ],
        "prefixlens": [
            "128"
        ],
        "device": "lo",
        "flags": "73<UP,LOOPBACK,RUNNING> ",
        "mtu": "65536"
    },
}

开发

要启动开发,请使用Python虚拟环境并安装开发需求

# Install dev dependencies
pip install -r requirements_dev.txt
# Run tests locally
make test

您还可以安装tox并在特定环境中运行测试

pip install tox
tox -e py27

在提交和打开PR之前,请确保您已运行pre-commit钩子

pip install pre-commit
pre-commit install

发行说明

0.24

  • 增加对箭头表示法的inet支持 #71

0.23

  • 增加对多个子网掩码、广播地址以及IPv6前缀长度的支持 #67

0.22

  • 支持Python 3.7和3.8 #51 #53

  • 在Windows上默认检测接口 #25 #56

  • 为Unix ip命令添加新标志 #61

0.22

  • 支持Python 3.7和3.8 #51 #53

  • 在Windows上默认检测接口 #25 #56

  • 为Unix ip命令添加新标志 #61

0.21

  • 强制使用C作为执行命令的locale,以确保一致的正则表达式模式 #47

0.20

  • ipifconfig命令都不存在时抛出异常 #45

0.19

  • 添加对使用VLAN表示法的接口的支持,例如 eth2.2 #40

  • ip命令结果中获取MTU值 #39

0.18

  • 添加对包含非字母数字字符的接口的支持,例如 eth-int #35 和 #36

0.17

  • 修复回归问题并添加测试,恢复ip

  • 添加对MacOSX上ip命令的支持

0.16

  • 在新的‘inet4’字段中支持多个IPv4地址

  • 整理打包

0.15

  • 支持桥接接口名称 #24

0.14

  • 替换Python 2语法 #21

0.13

  • 在非英语Windows系统上出现更多崩溃 #17

  • 已知问题:本地化的非英语Windows解析不起作用 #18

0.12

  • 修复非英语Windows系统上的编码崩溃

0.11

经过6个beta版本发布后,我们不再将此视为beta软件,而是将其视为稳定版本——我们可能永远无法跟上不同系统检测网络属性的各种方式。任何检测错误且可以更新的内容,也可以作为新的补丁版本实现和发布。

所以,让我们 尽早发布,经常发布

此次发布旨在清理代码库(适度!)并引入Windows兼容性。

  • 添加对ipconfig输出进行Windows兼容性解析的支持

  • 处理非Unicode终端(尤其是Windows+Mac)

  • ifcfg.get_parser中移除未定义的encoding关键字参数

  • 移除未操作的Linux内核2.x解析和kernel关键字参数

  • 移除类ifcfg.IfcfgParser,改用UnixParser

  • 所有字符串都是UTF-8,即使在Py 2.7中也是如此

  • 现在保证只包含跨平台功能的结果集:['inet', 'ether', 'inet6', 'netmask']

  • IPv6地址现在存储在列表中。

  • 移除了prefixlen和scopeid,因为它们应该为每个IPv6地址添加,而不是接口

  • 允许即使OS系统未识别,也可以导入ifcfg

  • 移除ifcfg.exc模块

  • 修复Linux(Sergej Vasiljev)上包含 :_- 字符的某些接口名称

0.10.1

  • 修复编码问题,防止检测到 default_interface

0.10

  • 支持没有ifconfig的Unix系统,例如较新的Ubuntu/Debian

  • 重构以使用src/层次结构

许可证

如果cfg库是开源的,并按照BSD许可证(三个条款)进行分发。请参阅此软件中包含的LICENSE文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

ifcfg-0.24.tar.gz (12.1 kB 查看散列值)

上传时间

构建分发

ifcfg-0.24-py2.py3-none-any.whl (10.3 kB 查看散列值)

上传时间 Python 2 Python 3

支持者