赞
踩
在分布式系统部署时,会存在以下场景:一个应用部署在 N 台 Linux 主机上,在项目部署前,要验证所有主机的 JDK 版本或其他资源配置是否符合预期,例如,检查所有机器的 JDK 版本是否相同。
如果逐台登录主机,然后逐台使用命令 “java -version” 来验证,虽然可以完成任务,但是效率低下。为提高效率,可以通过脚本实现多台主机批量执行命令,实现步骤如下所示。
首先 Linux 主机必须设置了 ssh 免密登录,可以将其中一台作为信任主机,免密登录到其他所有主机,具体配置方法见《两台 Linux 主机之间配置信任关系(以及如何解除)》。
vi hosts 命令创建主机列表文件 hosts,将所有远程主机列在文件中。
$ vi hosts
$ cat hosts
47.100.247.242
101.132.242.27
47.103.217.188
#!/bin/sh doCommand() { hosts=`sed -n '/^[^#]/p' hosts` for host in $hosts do echo "" echo HOST $host ssh $host "$@" done return 0 } if [ $# -lt 1 ] then echo "$0 cmd" exit fi doCommand "$@" echo "return from doCommand"
$ chmod u+x doCommand.sh
脚本运行命令格式如下:
./doCommand.sh "[yourcommand]"
备注:参数 [yourcommand] 为信任主机上待执行的命令。
示例如下:
$ ./doCommand.sh "java -version" HOST 47.100.247.242 openjdk version "1.8.0_171" OpenJDK Runtime Environment (build 1.8.0_171-b10) OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode) HOST 101.132.242.27 openjdk version "1.8.0_252" OpenJDK Runtime Environment (build 1.8.0_252-b09) OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode) HOST 47.103.217.188 openjdk version "1.8.0_232" OpenJDK Runtime Environment (build 1.8.0_232-b09) OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode) return from doCommand
这样该脚本就会在每台机器上执行 “java -version” 命令,并将各台主机的 JDK 版本信息返回信任主机。
文章参考:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。