系统管理工具包: 使用 SSH 进行分布式管理
2008-11-12 08:30:42 来源:WEB开发网MACHINES 和 COMMAND 是从命令行中“按原样”提取的内容。在使用这个脚本时,您必须将用户或者主机组合和命令放到双引号中,以确保能够将其识别为单个参数。
唯一的其他附加内容是 TIMEOUT 选项。它为 SSH 设置了 ConnectTimout 选项,使得在运行一个命令时,您需要等待连接到一台不可用的主机。在这个脚本的开头设置了缺省值,应该可以确保您不会等待太久。
在运行这个命令时,您将输出发送到两个日志文件,一个用于标准输出,另一个用于标准错误。然后,您将这些内容分别输出到合适的位置。这是 SSH 的一个突出的优点,远程计算机重定向到相同的位置(标准输出、标准错误),所以您可以在本地进行重定向,同时保持输出结果的含义。
例如,您可以使用这个脚本重复进行 df 检查:$ runremote.sh "gentoo redhat" "df -h"
因为您对标准输出和错误进行了重定向,所以您甚至可以为整个过程生成日志:$ runremote.sh "gentoo redhat" "df -h" 2>/tmp/error.log
使用远程执行进行性能监视
在使用 runremote.sh 时,您可能希望使用超时值的确切值,并且您甚至可能希望更改这个值,这取决于您所执行的操作。例如,如果您正使用这个脚本通过在多台计算机中执行 uptime 命令来获得当前状态的快照,那么您一定不希望为连接和命令的执行而等待太久,否则快照就会不精确。
另外,这个脚本实际上是按顺序运行该命令。如果有大量的计算机,这种方式不仅很费时间,而且执行所选命令的第一台和最后一台计算机之间的时间延迟可能非常明显,以至于无法相互关联这些计算机。
对这个脚本稍作修改可得到 runremote2.sh,如清单 9 所示。这样可以几乎同时地执行这个远程命令(通过在后台运行它),然后同样通过管道将输出传输到各自的日志文件。
更多精彩
赞助商链接