用于unix/linux/macosx的python ifconfig包装器
ifcfg的Python项目详细描述
ifcfg是用于解析ifconfig和 ipconfig在python中输出。它有助于提取IP等信息, 网络掩码、MAC地址、主机名等。
对于不带ifconfig的较新unix系统,包含到ip的回退。窗户 通过ipconfig支持系统(英语)。
用法
import ifcfg import json for name, interface in ifcfg.interfaces().items(): # do something with interface print interface['device'] print interface['inet'] # First IPv4 found print interface['inet4'] # List of ips print interface['inet6'] print interface['netmask'] print interface['broadcast'] default = ifcfg.default_interface()
“ifcfg.interfaces()”转储到json的输出类似于 以下内容:
$ python -m ifcfg.cli | python -mjson.tool { "eth0": { "broadcast": "172.16.217.255", "ether": "00:0c:29:0c:da:5d", "flags": "4163<up,broadcast,running,multicast> ", "hostname": "derks-vm.local", "inet": "172.16.217.10", "inet4": ["172.16.217.10"], "inet6": ["fe80::20c:29ff:fe0c:da5d"], "mtu": "1500", "name": "eth0", "netmask": "255.255.255.0", }, "lo": { "ether": null, "flags": "73<up,loopback,running> ", "hostname": "localhost", "inet": "127.0.0.1", "inet4": ["127.0.0.1"], "inet6": ["::1"], "mtu": "16436", "name": "lo", "netmask": "255.0.0.0", }, "virbr0": { "broadcast": "192.168.122.255", "ether": "52:54:00:5b:70:0d", "flags": "4099<up,broadcast,multicast> ", "hostname": "derks-vm.local", "inet": "192.168.122.1", "inet4": ["192.168.122.1"], "inet6": [], "mtu": "1500", "name": "virbr0", "netmask": "255.255.255.0", } }
开发
要引导开发,请使用python虚拟环境,并安装dev需求:
# Install dev dependencies pip install -r requirements_dev.txt # Run tests locally make test
您还可以安装tox并在特定环境中运行测试:
pip install tox tox -e py27
提交和打开prs之前,请确保已运行预提交挂钩:
pip install pre-commit pre-commit install
发行说明
0.18
- 增加对非字母数字字符接口的支持,例如eth int35和36
0.17
- 在回归+添加测试之后还原ip。
- 为ip命令添加macosx支持
0.16
- 在新的“inet4”字段中支持多个IPv4地址
- 包装清理
0.15
- 支持桥接接口名称24
0.14
- 替换python 2语法21
0.13
- 非英语Windows系统上的进一步崩溃17
- 已知问题:本地化的非英语窗口解析不起作用18
0.12
- 修复非英语Windows系统上的编码崩溃问题
0.11
在6个beta版本之后,我们不再认为这是beta软件,而是考虑 它是稳定的-我们可能永远不会跟上所有不同的探测方法 不同系统的网络属性。任何被错误检测并能被更新的东西, 也可以作为新的补丁版本来实现和发布。
所以让我们ship early,ship往往代替。
这个版本试图清理代码库(节省!)并介绍 Windows兼容性。
- 添加与Windows兼容的ipconfig输出解析
- 处理非Unicode终端(特别是Windows+Mac)
- 正在从ifcfg.get_parser 中删除定义错误的encoding关键字arg
- 删除了no op linux kernel 2.x解析和kernelkeyword arg
- 已删除类ifcfg.IfcfgParser,请改用UnixParser。
- 所有字符串均为UTF-8,也采用PY 2.7格式
- 现在只保证结果集中包含跨平台功能: ['inet', 'ether', 'inet6', 'netmask']
- IPv6地址现在存储在列表中。
- 删除了前缀和scopeid,因为它们应该为每个ipv6地址添加,而不是 接口
- 允许导入ifcfg,不管操作系统是否 辨识。
- 删除ifcfg.exc模块
- 修复Linux(Sergej Vasiljev)上某些包含字符的接口名
0.10.1
- 修复了编码问题,防止检测到default_interface。
0.10
- 支持不带ifconfig的unix系统,例如较新的ubuntu/debian
- 重构为使用src/层次结构
许可证
ifcfg库是开源的,在bsd下发布 许可证(三条)。请查看随附的许可证文件 软件。