从单个提示控制成千上万的ssh会话
项目描述
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-C和Ctrl-D将被转发到远程shell。
提示符支持按Tab键进行自动完成。自动完成结果来自命令行历史记录、本地文件系统路径和用户$PATH中的命令。
可以使用<START-END>语法由polysh生成带数字的主机名。生成的数字将根据START和END数字中的零的数量进行零填充。
选项
- –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)s。polysh为每个连接启动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 使用一个介于 0 和 POLYSH_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…]
向远程壳发送控制字符
第一个参数是要发送的控制字符 c 或 d。注意,这些控制字符也可以通过简单地输入它们来发送。其余可选参数是目标壳。特殊字符 *、? 和 [] 的工作方式与预期相同。
- :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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49533909d7dafd8948cdb4ef1422a70de619754afe1bbd378e7b996d6b01a0b7 |
|
MD5 | fefaea9bf68dfe5c1b9d14e7503cd75b |
|
BLAKE2b-256 | 3e5f6e9e0f7cd72976f99c036a31e0d6a4a0b4714f770453ee87de3abbcf9b8a |