Python ifconfig包装器,适用于Unix/Linux/MacOSX + Windows的ipconfig
项目描述
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
- 当ip和ifconfig命令都不存在时抛出异常 #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的散列值
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 64f60f7a0d15c85876b76b5f79246ed8c27bf5f79e5753ec88287145884661ab | |
| MD5 | 44ddc19905c76efc29658832ab99b350 | |
| BLAKE2b-256 | ba5153de897f3be2402b53940cfe2570a1838ef828f416b5198dd454f1654b76 | 
ifcfg-0.24-py2.py3-none-any.whl的散列值
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | 950f31ddc3fdd877724fb4154b744434471106088ecf10170b96063c24b3c0b7 | |
| MD5 | 78ae0e3fa525b4692c38cee962ffc224 | |
| BLAKE2b-256 | d835d5d8da34881946022e311693a875e2d162045f20ea17d7d33707ab929eb8 |