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 |