在多台远端主机上执行命令

[Switch to English]

OnTheSSH支持将相同的命令同时发送到多台远端主机上执行,先看一个示例:

图中是将命令 STR=”hello”;echo $STR; 同时发送到4台远端主机上执行的情况。两台主机打印出变量STR的内容(绿色),另外两台主机无法连接而显示错误信息(红色)。

在多台主机上执行命令,使用的是SSH中exec协议,注意和平时我们用的shell终端有2点不同:

  • shell是有交互环境的,上一条命令可能影响到下一条命令的执行结果。比如在shell终端中先执行命令 STR=”hello” 再执行命令 echo $STR 是没有任何问题的,因为这两条命令在同一个会话中。而exec协议每次的命令执行,都是从创建SSH连接开始,执行结束时自动关闭SSH连接,如果先发送 STR=”hello” 命令去执行,再发送 echo $STR 命令是无法打印出变量内容的,因为两次exec执行不在同一个会话中。因此如果要执行多条命令,可用分号将命令拼接在一起,如图中的示例。
  • shell终端创建后会自动保存一些环境变量,比如终端窗口的宽度和高度,这样像top或vim程序就可以满屏显示。exec协议没有这些环境变量,所有也无法运行top或vim这样的程序。

在输入区域的标题栏右侧,有内置的一些快捷命令,这些命令是适合多主机来执行的,你可以从下拉列表中获取并执行它们,也可以添加修改它们,或参考它们编写自己的命令。