Debian和Ubuntu系统管理工具
项目描述
debuntu-tools软件包是我进行Debian和Ubuntu Linux系统上系统管理任务自动化的实验场所。目前只有四个程序,没有测试套件,但我打算继续在这个软件包上工作,使其更加有用。有关使用说明,请参阅以下章节和文档。
内容
状态
目前,debuntu-tools只是一个实验,因此我没有对可用性、可靠性或向后兼容性做出任何声明或承诺。我想我们会看到我需要多长时间才会将其视为不仅仅是一个实验 😊。这个软件包中的程序已在Ubuntu 16.04和18.04上手动测试,并用于管理无头Linux服务器。
安装
debuntu-tools软件包可在PyPI上找到,这意味着安装应该像这样简单
$ pip install debuntu-tools
实际上有无数种安装 Python 包的方法(例如,个人站点包目录(无跟踪),虚拟环境(无跟踪)或者全局安装),我没有打算在这里讨论这个问题,所以如果你感到害怕,请在返回这些说明之前先了解一下你的选项;:-)。
要求
debuntu-tools 需要几个 Python 包,但 Python 包的安装应该会自动为你拉取这些依赖。
程序debuntu-kernel-manager期望在一个基于 Debian 或 Ubuntu 的 Linux 发行版上运行,更具体地说,你需要一个功能齐全的dpkg安装。这可以启用根据dpkg使用的语义进行版本排序,如果你的目标是删除较旧的内核但保留较新的内核,那么这一点相当重要。要实际安装和删除内核包,你需要在管理内核的系统上拥有apt-get和sudo权限。
程序unlock-remote-system期望一个已经配置成这样远程 Linux 系统:预启动环境(初始 ramdisk)启用静态 IP 地址并启动 SSH 服务器,例如dropbear。有关如何设置此环境的更多信息,请参阅文档。
程序upgrade-remote-system建立在程序debuntu-kernel-manager和程序unlock-remote-system(以程序reboot-remote-system的形式)之上,因此上述所有要求都适用。
使用
使用 debuntu-tools 包有两种方式
以下描述的命令行界面。
Python API,其文档可在Read the Docs上找到。
以下程序在此处有文档说明
debuntu-kernel-manager
用法: debuntu-kernel-manager [选项] – [APT 选项]
检测并删除旧 Linux 内核头、镜像和模块包,这些包可以安全删除以节省磁盘空间并加快安装或删除内核的 apt-get 运行。
默认情况下,旧包会被检测并在命令行上报告,但不会进行更改。要实际删除旧包,您需要使用 -c、--clean 或 --remove 选项。使用以下命令可以执行 dry 运行,显示将要发生什么,但实际不会执行操作
$ debuntu-kernel-manager --remove -- --dry-run
debuntu-kernel-manager 程序目前处于 alpha 状态,这意味着已经发布了一个可用的程序的第一版,但没有关于它实际做什么的保证。我们已经提醒过您了 :-)
支持的选项
选项 |
描述 |
---|---|
-c、--clean、--remove |
删除被认为是安全的 Linux 内核头和/或镜像包。使用此选项需要在系统上拥有 sudo 访问权限,以便运行 'apt-get remove' 命令。 |
-f、--force |
当安装了多个 Linux 内核元包时,-c、--clean 和 --remove 选项将拒绝运行 apt-get 并以错误退出。使用 -f 或 --force 选项来覆盖此检查。 |
-p,--preserve-count=NUMBER |
保留内核包的最新 NUMBER 个版本(默认为 2)。 |
-r,--remote-host=ALIAS |
通过 SSH 在远程主机上检测并删除旧的 Linux 内核头和镜像包。ALIAS 参数指定用于连接到远程主机的 SSH 别名。 |
-v,--verbose |
增加详细程度(可以重复)。 |
-q,--quiet |
减少详细程度(可以重复)。 |
-h,--help |
显示此信息并退出。 |
debuntu-nodejs-installer
用法: debuntu-nodejs-installer [选项]
通过配置和使用 NodeSource 二进制包仓库,在 Debian 或 Ubuntu 系统上安装最新的 Node.js 二进制发行版。
由于新软件发布需要一段时间才能进入 Debian 和 Ubuntu 生态系统,而 Node.js 社区当前的发展速度非常快,因此提供 Node.js 的系统包已经严重过时。幸运的是,NodeSource 的人在 Debian 和 Ubuntu 包仓库中维护了提供最新 Node.js 二进制发行版的仓库。
NodeSource 提供安装脚本,建议直接下载并将它们传递给 shell。但这让我感到不舒服 :-) 但现在我已经设置过 NodeSource 安装十几次了。一环扣一环,现在有了这个程序。
支持的选项
选项 |
描述 |
---|---|
-i,--install |
配置系统使用 NodeSource 二进制包仓库之一,并从仓库中安装 'nodejs' 包。 |
-V,--version=NODEJS_VERSION |
设置要安装的 Node.js 版本。您可以在以下网页上找到可用版本的列表: https://github.com/nodesource/distributions/ 默认:node_10.x(活动 LTS) |
-s,--sources-file=FILENAME |
设置在配置 NodeSource 二进制包仓库期间将添加到系统中的 'package resource list' 的路径名。 默认:/etc/apt/sources.list.d/nodesource.list |
-r,--remote-host=ALIAS |
通过 SSH 在远程主机上执行请求的操作。ALIAS 参数指定用于连接到远程主机的 SSH 别名。 |
-v,--verbose |
增加详细程度(可以重复)。 |
-q,--quiet |
减少详细程度(可以重复)。 |
-h,--help |
显示此信息并退出。 |
reboot-remote-system
用法: reboot-remote-system [选项] [SSH_ALIAS]
重启远程系统并等待系统重新上线。如果 SSH 别名与 'unlock-remote-system' 配置中的某个部分匹配,则在重启后远程系统的根磁盘加密将解锁。
支持的选项
选项 |
描述 |
---|---|
-s,--shell |
在远程系统启动完成后启动一个交互式 shell。 |
-v,--verbose |
增加日志详细程度(可以重复)。 |
-q,--quiet |
减少日志详细程度(可以重复)。 |
-h,--help |
显示此信息并退出。 |
unlock-remote-system
用法: unlock-remote-system [选项] PRE_BOOT [POST_BOOT]
通过使用SSH连接到远程系统并在交互式提示符中非交互式地输入密码,启动一个等待输入根磁盘加密密码的远程Linux系统。远程Linux系统需要配置为在预启动环境中启用静态IP地址并启动类似Dropbear的SSH服务器。
PRE_BOOT参数定义了如何连接到预启动环境
它的值假定是一个主机名、IP地址或SSH别名。
它可以可选地以用户名开始,后跟一个'@'符号。
它可以可选地以一个':'符号和一个端口号结尾。
默认用户名为'root',默认端口号为22。可选的POST_BOOT参数定义了如何连接到启动后的环境,这在预启动环境和启动后环境在不同的端口号上运行SSH服务器时很有用。
如果PRE_BOOT参数与用户定义的配置部分名称匹配,则该部分的选项定义了unlock-remote-system如何操作。
支持的选项
选项 |
描述 |
---|---|
-i, --identity-file=KEY_FILE |
使用存储在KEY_FILE中的私钥进行SSH连接到预启动环境。启动后环境预计将使用您的默认私钥或具有合适的~/.ssh/config配置。 |
-k, --known-hosts=HOSTS_FILE |
使用HOSTS_FILE作为SSH连接到预启动环境的“已知主机文件”。当此选项未指定时,将禁用主机密钥验证,以避免在预启动环境和启动后环境中运行的不同SSH服务器的主机密钥之间的冲突。 |
-p, --password=NAME |
从本地密码存储~/.password-store使用'pass'程序获取远程系统根磁盘加密的密码。NAME参数给出密码的全名。 |
-r, --remote-host=SSH_ALIAS |
通过SSH代理连接到远程系统。 |
-s,--shell |
在远程系统启动完成后启动一个交互式 shell。 |
-w, --watch |
开始监控远程系统,并在远程系统重启时自动解锁根磁盘加密。监控会无限期进行。 |
-a, --all |
当与--watch结合使用时,启用对所有配置的系统进行监控。 |
-v,--verbose |
增加日志详细程度(可以重复)。 |
-q,--quiet |
减少日志详细程度(可以重复)。 |
-h,--help |
显示此信息并退出。 |
upgrade-remote-system
用法: upgrade-remote-system [OPTIONS] [SSH_ALIAS]
升级远程Debian或Ubuntu系统上的系统软件包,当由于安全更新或系统尚未运行最新内核而需要重启系统时,删除旧的Linux内核和头文件软件包,并可选地删除'自动删除'的系统软件包。
如果给定的SSH别名与'unlock-remote-system'配置中的部分匹配,则在系统重启时将自动解锁远程系统的根磁盘加密。
支持的选项
选项 |
描述 |
---|---|
-s,--shell |
之后在远程系统上启动交互式shell。 |
-v,--verbose |
增加日志详细程度(可以重复)。 |
-q,--quiet |
减少日志详细程度(可以重复)。 |
-h,--help |
显示此信息并退出。 |
配置文件
unlock-remote-system
配置文件是Python的configparser模块支持的ini语法的子集中的文本文件。它们可以位于以下位置
目录 |
主要配置文件 |
模块化配置文件 |
---|---|---|
/etc |
/etc/unlock-remote-system.ini |
/etc/unlock-remote-system.d/*.ini |
~ |
~/.unlock-remote-system.ini |
~/.unlock-remote-system.d/*.ini |
~/.config |
~/.config/unlock-remote-system.ini |
~/.config/unlock-remote-system.d/*.ini |
可用的配置文件将按上述顺序加载,以便用户特定的配置文件覆盖系统范围内的配置文件。
配置的每个部分都适用于单个主机。以下部分支持这些选项
配置选项 |
默认值 |
---|---|
5分钟 |
|
60秒 |
|
/conf/conf.d/cryptroot |
|
/scripts/local-top/cryptroot |
|
/tmp/keyscript.sh |
|
(无值) |
|
/lib/cryptsetup/passfifo |
|
(无值) |
|
(无值) |
|
(无值) |
|
(无值) |
|
(无值) |
|
1秒 |
|
5秒 |
|
(无值) |
上表中的链接指向Python API文档,其中解释了每个选项的目的。
联系
debuntu-tools的最新版本可在PyPI(https://pypi.ac.cn/project/debuntu-tools)和GitHub(https://github.com/xolox/python-debuntu-tools)上找到。文档托管在Read the Docs(https://debuntu-tools.readthedocs.io/en/latest/#api-documentation)上,包括变更日志。有关错误报告,请在GitHub上创建问题。如果您有任何问题,建议等,请随时通过peter@peterodding.com发送电子邮件。
许可协议
此软件受MIT许可证许可。
© 2018 Peter Odding.
项目详情
debuntu-tools-0.9.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 701ab95ce2018bf539ae98dbe8f5f906c4d170cf52f6e7324ab87304d10f99d8 |
|
MD5 | 1e9b638c14307da3697735e97d57f638 |
|
BLAKE2b-256 | 57a4ba66abe26ee2d7c058fac41c47d9c79a1df02e3cb13e8640416765b7d247 |