从单个提示符控制数千个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>
–版本
显示程序的版本号并退出
-h,–帮助
显示帮助消息并退出
–主机文件=文件

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

主机名是在 命令行,但也可以从文件中读取它们。格式是 每行一个主机名,跳过注释和空行。

–命令=命令

在远程shell上执行的命令

这从中的 polysh 开始 非交互模式。它将启动远程shell,发送命令, 打印输出并在所有远程设备上完成命令后退出 贝壳。这与在标准输入上通过管道发送命令相同。 将聚合远程shell的退出代码(取最大值) 形成polysh的退出代码。

–ssh=ssh
ssh使用的命令

默认情况下, exec ssh-ologlevel=quiet-t%(主机)s%(端口)s polysh 为每个可能生成默认登录的连接生成ssh 远程上的shell,但可以在此处指定另一个shell命令。为了 例如,使用ssh=-usleep$((random*50));exec ssh'将延迟 引入此选项是为了避免所有主机同时访问nfs服务器。如果 不应在命令末尾添加主机名,宏 %(主机)s 可以插入主机名的位置。而且,使 当然,您使用的命令会启动一个 pty ,这可能需要 -t 选项 ssh

–user=用户

远程用户以

指定时, polysh 将ssh到 用户 @ 主机而不是简单的主机。

–无颜色

禁用彩色主机名,默认情况下启用

指定时, polysh 将不 使用TTY颜色stname前缀。

–密码文件=文件

从指定文件中读取密码

- 是TTY。这可以 当公钥身份验证不可用时使用,或者写入 文件中的密码,或将文件设置为 - 以便 polysh 将提示 密码。

–日志文件=日志文件

记录每个机器对话的文件

如果指定, polysh 将所有执行的命令及其输出记录在文件中。测井 可以使用 :set_log 控件动态更改目标 命令。< /P>

–中止错误

如果某些shell未能初始化,则中止

默认情况下, polysh 当无法成功打开远程shell时,只记录一个错误。 有了这个选项,它将以失败退出。

–调试

打印调试信息

使用此选项可以查看 在 polysh 和远程外壳之间传输。这个选项可以是 使用控制外壳中的"设置调试"命令动态切换。

控制命令

控制命令是以冒号和 指向 polysh 本身而不是远程shell。这些命令是:

< DL>
:添加名称…
添加一个或多个远程外壳
:chdir本地路径
更改polysh的当前目录(不是远程shell)
:禁用[shell…]

禁用向远程外壳发送命令

如果命令 没有效果,它会将所有其他壳更改为"反向启用"值。 也就是说,如果只禁用已经禁用的shell,它将首先 启用所有其他外壳。特殊字符 * [] 工作 如预期。

:启用[shell…]
启用向远程shell发送命令。如果命令 没有效果,它会将所有其他壳更改为"反向启用"值。 也就是说,如果只启用已经启用的shell,它将首先 禁用所有其他外壳。特殊字符 * [] 工作 如预期。
:导出变量

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

polysh_nr_shells 是启用的外壳总数。 多边形排列 用 0 和 多核壳-1。 polysh_name 是上指定的主机名 命令行和polysh显示主机名 通过 :list (大多数情况下与 polysh_name 相同)。

:隐藏密码

不要回显下一行

这在输入密码时很有用。 如果启用调试或日志记录,则将禁用它以避免 显示密码。因此,必须重新启用日志记录或 如果需要,请在以后进行调试。

:列出[shell…]

列出远程外壳及其状态

输出包括: <;主机名>;<;已启用?>;<;状态>;:<;最后打印行>; 。特殊 字符 * [] 按预期工作。

:清除[外壳…]

删除禁用的远程外壳

这有助于缩短列表。 特殊字符 * [] 按预期工作。

:退出
退出
:重新连接[shell…]

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

特殊字符 * [] 按预期工作。

:重命名[新名称]

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

争论会 在远程进程上进行shell扩展。没有争论,原来的 主机名将还原为显示的名称。

:重置提示[外壳…]

将提示更改为由polysh识别

特殊字符 * [] 按预期工作。

:发送控制字母[shell…]

向远程外壳发送控制字符

第一个参数是发送 c d 的控制字符。注意 这些控制字符也可以通过键入来发送。 其余的可选参数是目标shell。特殊 字符 * [] 按预期工作。

:设置"调试"y n[外壳…]

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

第一 参数是 y 以启用调试输出,参数是 n 以禁用它。 剩下的可选参数是选定的shell。特殊 字符 * [] 按预期工作。

:设置日志[本地路径]

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

如果未指定本地路径,则恢复默认的不记录行为。

:显示读取缓冲区[外壳…]

打印远程shell读取的数据

特殊字符 * [] 按预期工作。

历史记录

该工具由Guillaume Chazarain<;撰写。第一 2006年发布的版本。由InnoGames GmbH维护 自2018年起。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在mongodb中获取用户有权访问的数据库列表?   基于契约和类不变量的java设计   java我的代码有什么问题,似乎是正确的,但事实并非如此   java Android初学者:布局按钮和文本   400错误Paypal令牌API与Java(HttpURLConnection)   为什么Java从socket中随机读取数据,而不是整个消息?   如果我调用scanner,我会扫描两次。先是下一个,然后是扫描仪。下一个   如果消息发送失败,java ActiveMQ/JMS不重试   java有没有类似于dynaTrace的开源框架?   java Android:获取zip中的文件数(使用存储卷/存储访问框架)   java无法将流图像解码为片段   java如何修复Jenkins插件中的“此位置的预期stackmap帧”   java如何使用javac编译器编译AndroidManifest。xml文件?