从单个提示符控制数千个ssh会话
polysh的Python项目详细描述
多晶硅
polysh(以前称为group shell或gsh)是一个远程shell多路复用器。 它允许您在一个shell中同时控制多个远程shell。不像 其他命令调度器,它是交互式的,因此shell在 远程主机是持久的。它只需要远程的ssh服务器 主机,或以其他方式打开远程外壳。
python>;=3.5是必需的。
用法:
polysh [OPTIONS]... HOSTS...
提示
polysh 提示符显示 就绪(x)>; 或 等待(x/y)>; 。 ready 提示意味着所有启用的远程shell都准备好接收 有x个这样的远程shell。否则,等待 显示提示,这意味着x远程shell尚未准备好接收 命令。不管怎样,所有的readline编辑功能,比如 历史记录、在历史记录中搜索和完成都可用。
以感叹号为前缀的命令在本地执行。信号 ctrl-c 和 ctrl-d 被转发到远程shell。
提示支持按Tab键完成。完成结果 从命令行历史记录、本地文件系统的路径和 来自用户的命令 $path
使用 <;start-end>; 可以通过 polysh 生成带有数字的主机名 语法。生成的数字将根据数字填充为零 开始 和 结束 数字中的零。
选项
< DL>从给定文件中读取主机名,每行一个
主机名是在 命令行,但也可以从文件中读取它们。格式是 每行一个主机名,跳过注释和空行。
在远程shell上执行的命令
这从中的 polysh 开始 非交互模式。它将启动远程shell,发送命令, 打印输出并在所有远程设备上完成命令后退出 贝壳。这与在标准输入上通过管道发送命令相同。 将聚合远程shell的退出代码(取最大值) 形成polysh的退出代码。
默认情况下, exec ssh-ologlevel=quiet-t%(主机)s%(端口)s 。 polysh 为每个可能生成默认登录的连接生成ssh 远程上的shell,但可以在此处指定另一个shell命令。为了 例如,使用ssh=-usleep$((random*50));exec ssh'将延迟 引入此选项是为了避免所有主机同时访问nfs服务器。如果 不应在命令末尾添加主机名,宏 %(主机)s 可以插入主机名的位置。而且,使 当然,您使用的命令会启动一个 pty ,这可能需要 -t 选项 ssh
远程用户以
指定时, polysh 将ssh到 用户 @ 主机而不是简单的主机。
禁用彩色主机名,默认情况下启用
指定时, polysh 将不 使用TTY颜色stname前缀。
从指定文件中读取密码
- 是TTY。这可以 当公钥身份验证不可用时使用,或者写入 文件中的密码,或将文件设置为 - 以便 polysh 将提示 密码。
记录每个机器对话的文件
如果指定, polysh 将所有执行的命令及其输出记录在文件中。测井 可以使用 :set_log 控件动态更改目标 命令。< /P>
如果某些shell未能初始化,则中止
默认情况下, polysh 当无法成功打开远程shell时,只记录一个错误。 有了这个选项,它将以失败退出。
打印调试信息
使用此选项可以查看 在 polysh 和远程外壳之间传输。这个选项可以是 使用控制外壳中的"设置调试"命令动态切换。
控制命令
控制命令是以冒号和 指向 polysh 本身而不是远程shell。这些命令是:
< DL>禁用向远程外壳发送命令
如果命令 没有效果,它会将所有其他壳更改为"反向启用"值。 也就是说,如果只禁用已经禁用的shell,它将首先 启用所有其他外壳。特殊字符 * , ? 和 [] 工作 如预期。
在启用的远程shell上导出一些环境变量
polysh_nr_shells 是启用的外壳总数。 多边形排列 用 0 和 多核壳-1。 polysh_name 是上指定的主机名 命令行和polysh显示主机名 通过 :list (大多数情况下与 polysh_name 相同)。
不要回显下一行
这在输入密码时很有用。 如果启用调试或日志记录,则将禁用它以避免 显示密码。因此,必须重新启用日志记录或 如果需要,请在以后进行调试。
列出远程外壳及其状态
输出包括: <;主机名>;<;已启用?>;<;状态>;:<;最后打印行>; 。特殊 字符 * , ? 和 [] 按预期工作。
删除禁用的远程外壳
这有助于缩短列表。 特殊字符 * , ? 和 [] 按预期工作。
尝试重新连接到断开连接的远程外壳
特殊字符 * , ? 和 [] 按预期工作。
使用参数重命名所有启用的远程shell
争论会 在远程进程上进行shell扩展。没有争论,原来的 主机名将还原为显示的名称。
将提示更改为由polysh识别
特殊字符 * , ? 和 [] 按预期工作。
向远程外壳发送控制字符
第一个参数是发送 c 或 d 的控制字符。注意 这些控制字符也可以通过键入来发送。 其余的可选参数是目标shell。特殊 字符 * , ? 和 [] 按预期工作。
启用或禁用远程shell的调试输出
第一 参数是 y 以启用调试输出,参数是 n 以禁用它。 剩下的可选参数是选定的shell。特殊 字符 * , ? 和 [] 按预期工作。
将每个控制台I/O复制到给定的本地文件中
如果未指定本地路径,则恢复默认的不记录行为。
打印远程shell读取的数据
特殊字符 * , ? 和 [] 按预期工作。
历史记录
该工具由Guillaume Chazarain<;撰写。第一 2006年发布的版本。由InnoGames GmbH维护 自2018年起。