我需要测试具有多个远程服务器的分布式系统,因此我在主服务器上使用 pssh 来控制其他服务器。这里需要使用不同的命令运行多个服务器,例如
在服务器201上,需要运行
java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002
在服务器202上,需要运行
java -jar test.jar 9001 **.**.**.** 9003
java -jar test.jar 9001 **.**.**.** 9004
在服务器 203 中,需要运行
java -jar test.jar 9001 **.**.**.** 9005
java -jar test.jar 9001 **.**.**.** 9006
...
所有服务器信息已保存到 hosts.txt 中用户名@服务器格式。那么如何在主服务器中使用 pssh 来运行命令呢?
答案1
pssh
用于在不同的服务器上运行完全相同的命令,您的示例表明您想在不同的服务器上运行不同的命令(命令的开头都相同,但最后一个数字不同)。
您可以做的是将这些命令放入每个相应服务器的脚本文件中,确保每个服务器上的脚本文件调用相同,然后使用pssh -i -h hosts.txt script.sh
。
例如,在服务器 201 上输入script.sh
#!/bin/sh
java -jar test.jar 9001 **.**.**.** 9001
java -jar test.jar 9001 **.**.**.** 9002
并在服务器 202 上输入script.sh
#!/bin/sh
java -jar test.jar 9001 **.**.**.** 9003
java -jar test.jar 9001 **.**.**.** 9004
ETC。
然后将其放入script.sh
将运行该命令的用户的 $PATH 中或者提供该脚本的完整路径,并且不要忘记使该脚本在服务器上可执行。