跳转到主要内容

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-getsudo权限。

  • 程序unlock-remote-system期望一个已经配置成这样远程 Linux 系统:预启动环境(初始 ramdisk)启用静态 IP 地址并启动 SSH 服务器,例如dropbear。有关如何设置此环境的更多信息,请参阅文档

  • 程序upgrade-remote-system建立在程序debuntu-kernel-manager和程序unlock-remote-system(以程序reboot-remote-system的形式)之上,因此上述所有要求都适用。

使用

使用 debuntu-tools 包有两种方式

  1. 以下描述的命令行界面。

  2. 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

可用的配置文件将按上述顺序加载,以便用户特定的配置文件覆盖系统范围内的配置文件。

配置的每个部分都适用于单个主机。以下部分支持这些选项

配置选项

默认值

boot-timeout

5分钟

connect-timeout

60秒

cryptroot-config

/conf/conf.d/cryptroot

cryptroot-program

/scripts/local-top/cryptroot

key-script

/tmp/keyscript.sh

known-hosts-file

(无值)

named-pipe

/lib/cryptsetup/passfifo

password

(无值)

password-name

(无值)

password-store

(无值)

post-boot

(无值)

pre-boot

(无值)

retry-interval

1秒

scan-timeout

5秒

ssh-proxy

(无值)

上表中的链接指向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 (48.4 kB 查看哈希值)

上传时间

构建分布

debuntu_tools-0.9.1-py2.py3-none-any.whl (37.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持