由于脚本的性质(在工作中完成,在工作RHEL机器上完成(,我无法显示代码,但我至少可以提供伪代码来帮助起点。 现在:
启动循环
1(读取主机文本文件的第一行(然后是下一行,以此类推 循环(并将其分配给变量(主机名(
2( 向主机发送 ssh -t 命令(需要 2 到 6 个 分钟收到回复(
3( 记录对文本文件的响应(从读入到新主机重复循环 文本文件(
结束循环
目前,由于该脚本命中了多少个系统,我必须在一夜之间运行此脚本。
我希望能够实现相同的目标并从每个主机的文件中的命令中获取响应,但我希望命令同时发出,以便总共需要 2 到 6 分钟。 但是因为这是为了工作,所以我不允许在系统上安装 ansible;还有没有其他方法可以实现这一目标? 如果是这样,请提供一些区域或指出我正确的方向。
与 GNU 并行:
parallel -j0 --slf hosts.txt --nonall mycommand > out.txt
但也许您想要更多信息:
parallel -j0 --slf hosts.txt --joblog my.log --tag --nonall mycommand > out.txt
我在sh
年前使用如下方式执行此操作:
while true
do
if [ numberOfFileinSomeDir -lt N ]
then
(touch SomeDir/hostname; ssh hostname ... > someotherDir/hostname.txt ; rm SomeDir/hostname) &
...
但这在 ~100 台主机后停止工作。这很糟糕 - 不要这样做。如果少于~500个主机,pssh可能是最简单的 - 也许您可以在主目录中安装?
谷歌像python parallel execute process multiple
这样的东西,一定会有一个脚本可以完成你需要的。
超过~500个主机,您确实需要开始安装一些工具,正如其他人在评论中提到的那样。