跳转到主要内容

从单个提示控制成千上万的ssh会话

项目描述

https://travis-ci.org/innogames/polysh.svg?branch=master

Polysh

Polysh(以前称为Group Shell或gsh)是一种远程shell多路复用器。它允许您同时在一个shell中控制多个远程shell。与其他命令调度器不同,它是交互式的,因此远程主机上启动的shell是持久的。它只需要远程主机上的SSH服务器,或者打开远程shell的其他方法。

需要Python >= 3.5。

用法

polysh [OPTIONS]... HOSTS...

提示符

polysh的提示符显示为ready (X)>waiting (X/Y)>ready提示符表示所有启用的远程shell都已准备好接收命令,共有X个这样的远程shell。否则,将显示waiting提示符,表示X个远程shell尚未准备好接收命令。无论如何,所有readline编辑功能,如历史导航、历史搜索和自动完成都可用。

以感叹号开头的命令将在本地执行。信号Ctrl-CCtrl-D将被转发到远程shell。

提示符支持按Tab键进行自动完成。自动完成结果来自命令行历史记录、本地文件系统路径和用户$PATH中的命令。

可以使用<START-END>语法由polysh生成带数字的主机名。生成的数字将根据STARTEND数字中的零的数量进行零填充。

选项

–version

显示程序版本号并退出

-h, –help

显示帮助信息并退出

–hosts-file=FILE

从给定的文件中读取主机名,每行一个

主机名可以在命令行中给出,但也可以从文件中读取。格式是每行一个主机名,#注释和空白行将被忽略。

–command=CMD

在远程shell上执行的命令

这将以非交互模式启动polysh。它将启动远程shell,发送命令,打印输出并在所有远程shell上完成命令时退出。这与在标准输入上管道命令相同。远程shell的退出代码将汇总(取最大值)以形成polysh的退出代码。

–ssh=SSH

用于SSH的命令

默认情况下,exec ssh -oLogLevel=Quiet -t %(host)s %(port)spolysh为每个连接启动ssh,这可能在远程主机上启动默认登录shell,但可以在此处指定另一个shell命令。例如,使用–ssh=’usleep $((RANDOM*50)); exec ssh’将引入延迟以避免所有主机同时访问NFS服务器。如果命令末尾不应添加主机名,则可以在应放置主机名的地方插入宏%(host)s。此外,请确保您使用的命令启动了一个pty,这可能需要ssh-t选项。

–user=USER

远程登录用户

指定时,polysh将ssh到USER@HOST而不是简单地使用HOST。

–no-color

禁用彩色主机名,默认启用

指定时,polysh将不会使用tty颜色作为主机名前缀。

–password-file=FILE

从指定的文件中读取密码

-是tty。当公钥认证不可用时可以使用它,可以将密码写入文件,或将FILE设置为-,这样polysh将提示输入密码。

–log-file=LOG_FILE

记录每个机器对话的文件

如果指定,polysh将在文件中记录所有执行的命令及其输出。可以通过:set_log控制命令动态更改日志目标。

–abort-errors

如果某些shell初始化失败则中止

默认情况下,polysh在无法成功打开远程shell时仅记录一个错误。使用此选项时,它将以失败退出。

–debug

打印调试信息

使用此选项可以查看 polysh 和远程壳之间确切传输的内容。此选项可以使用控制壳中的 :set_debug 命令动态切换。

控制命令

控制命令是特殊用途命令,以冒号开头,针对 polysh 本身而不是远程壳。这些命令包括:

:add NAMES…

添加一个或多个远程壳

:chdir LOCAL_PATH

更改 polysh 的当前目录(不是远程壳)

:disable [SHELLS…]

禁用向远程壳发送命令

如果命令不会产生效果,它将所有其他壳的启用值改为相反值。也就是说,如果您只禁用已禁用的壳,它将首先启用所有其他壳。特殊字符 *?[] 的工作方式与预期相同。

:enable [SHELLS…]

启用向远程壳发送命令。如果命令不会产生效果,它将所有其他壳的启用值改为相反值。也就是说,如果您只启用已启用的壳,它将首先禁用所有其他壳。特殊字符 *?[] 的工作方式与预期相同。

:export_vars

在启用的远程壳上导出一些环境变量

POLYSH_NR_SHELLS 是启用的壳的总数。POLYSH_RANK 使用一个介于 0POLYSH_NR_SHELLS - 1 之间的数字唯一标识每个壳。POLYSH_NAME 是命令行中指定的主机名,而 POLYSH_DISPLAY_NAME 是由 :list 显示的主机名(通常与 POLYSH_NAME 相同)。

:hide_password

不回显下一条输入的行

当输入密码时很有用。如果启用调试或记录,它将禁用以避免显示密码。因此,如果您需要,之后您将必须重新启用记录或调试。

:list [SHELLS…]

列出远程壳及其状态

输出包括:<hostname> <enabled?> <state>: <last printed line>。特殊字符 *?[] 的工作方式与预期相同。

:purge [SHELLS…]

删除禁用的远程壳

这有助于使列表更短。特殊字符 *?[] 的工作方式与预期相同。

:quit

退出 polysh

:reconnect [SHELLS…]

尝试重新连接到断开的远程壳

特殊字符 *?[] 的工作方式与预期相同。

:rename [NEW_NAME]

使用参数重命名所有启用的远程壳

参数将在远程进程中展开。如果没有参数,将恢复原始主机名作为显示名。

:reset_prompt [SHELLS…]

更改提示符以便 polysh 识别

特殊字符 *?[] 的工作方式与预期相同。

:send_ctrl LETTER [SHELLS…]

向远程壳发送控制字符

第一个参数是要发送的控制字符 cd。注意,这些控制字符也可以通过简单地输入它们来发送。其余可选参数是目标壳。特殊字符 *?[] 的工作方式与预期相同。

:set_debug y|n [SHELLS…]

启用或禁用远程壳的调试输出

第一个参数是 y 以启用调试输出,n 以禁用它。其余可选参数是选定的壳。特殊字符 *?[] 的工作方式与预期相同。

:set_log [LOCAL_PATH]

将每个控制台 I/O 复制到给定的本地文件

如果没有给出 LOCAL_PATH,则恢复不记录的默认行为。

:show_read_buffer [SHELLS…]

打印远程壳读取的数据

特殊字符 *?[] 的工作方式与预期相同。

历史

该工具由 Guillaume Chazarain 编写 <guichaz@gmail.com>。2006 年发布第一个版本。自 2018 年以来由 InnoGames GmbH 维护。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

polysh-0.14.tar.gz (32.0 kB 查看哈希值)

上传时间

支持