Python的Linux系统管理工具
项目描述
Python包 linux-utils 提供了实用函数,使得在Python中编写Linux系统的系统管理任务变得容易。以下功能目前已被实现
/etc/fstab 和 /etc/crypttab 配置文件的解析。
为 cryptsetup 提供基本的Python API,以及 cryptdisks_start 和 cryptdisks_stop 的Python实现(带有命令行界面)。
Python中Linux的原子文件系统操作。
简单的网络位置感知/发现。
此包目前在Ubuntu Linux上的cPython 2.7、3.4、3.5、3.6、3.7和PyPy(2.7)上进行了测试(使用Travis CI)。
安装
linux-utils 包可在PyPI上找到,这意味着安装应该像这样简单
$ pip install linux-utils
实际上,安装Python包的方式有很多种(例如,用户站点包目录per user site-packages directory、虚拟环境或仅安装系统级)我并没有打算在这里深入讨论这个问题,所以如果你感到害怕,请在返回这些说明之前先了解一下你的选项 😊。
用法
有关Python API的详细信息,请参阅Read the Docs上的API文档。cryptdisks_start和cryptdisks_stop的Python实现作为以下两个程序提供在命令行中
正如其名称所暗示的,这些程序并不是它们“官方”版本的等效功能,因为它们只支持LUKS加密和可用的加密选项的小子集。
cryptdisks-start-fallback
用法: cryptdisks-start-fallback NAME
读取/etc/crypttab并使用给定的NAME解锁加密文件系统。
此程序模拟了Debian的cryptdisks_start程序的功能,但它只支持LUKS加密和可用的加密选项的小子集。
cryptdisks-stop-fallback
用法: cryptdisks-stop-fallback NAME
读取/etc/crypttab并使用给定的NAME锁定加密文件系统。
此程序模拟了Debian的cryptdisks_stop程序的功能,但它只支持LUKS加密和可用的加密选项的小子集。
历史
回到2015年,我编写了一些Python代码来解析Linux配置文件/etc/fstab和/etc/crypttab,用于在crypto-drive-manager中使用。快进到2017年,我发现自己在rsync-system-backup中想要使用相同的功能。我面前出现了三个选择
- 复制/粘贴相关代码
在多个地方维护相同的代码会导致代码质量降低,因为需要重复编写文档、开发测试和修复错误是一项非常令人泄气的工作。事实上,我在2016年确实将此代码的部分复制/粘贴到了一个工作中,因为我在那里需要类似的功能。当然,从那时起,这两个实现开始出现分歧 😛。
- 将crypto-drive-manager作为rsync-system-backup的依赖项
虽然这种方法比复制/粘贴代码要好看一些,但它仍然不够优雅,因为这两个项目除了在Linux上与LUKS加密磁盘一起工作外,没有任何关系。
- 将功能提取到新的包中
在我看来,这是最优雅的方法,不幸的是,这也需要我付出最多的努力 😇。作为加分项,我发布了一个带有测试套件的新包,这意味着在crypto-drive-manager中留下未测试的代码更少(在撰写本文时,该代码没有测试套件)。
在提取代码时,我短暂地考虑将功能集成到debuntu-tools中,然而/etc/fstab和/etc/crypttab的解析并不特定于Debian或Ubuntu,而且debuntu-tools有多个与Linux配置文件解析无关的依赖项。
从那时起,很明显这是一个好选择(没有将功能合并到debuntu-tools中),因为现在linux-utils提供了cryptdisks_start和cryptdisks_stop的Python实现,这对于基于Debian之外的Linux系统非常有用。
联系
最新版本的 linux-utils 可在 PyPI 和 GitHub 上找到。文档可在 Read the Docs 上查看,包括一个 变更日志。如有 bug 报告,请在 GitHub 上创建问题。如果您有任何问题或建议,请随时通过电子邮件发送给我 peter@peterodding.com。
许可
本软件遵循 MIT 许可协议。
© 2020 Peter Odding。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。