由于脚本的性质(在工作中,在工作RHEL机器上完成),我不能显示代码,但我至少可以提供伪代码来帮助开始。目前:
开始循环
1)读取文件的主机文本文件的第一行(然后是下一行等等),并将其分配给一个变量(主机名)
2)向主机发送ssh -t命令(需要2-6分钟才能收到响应)
3)记录对文本文件的响应(对从文本文件中读取的新主机重复循环)
结束循环
目前,我必须在夜间运行此脚本,因为此脚本命中了多少系统。
我希望能够实现相同的目标,并从每个主机的该文件中的命令获得响应,但我希望命令同时发出,以便总共需要2到6分钟。但是因为这是为了工作,所以我不允许在系统上安装ansible;还有其他方法可以实现这个目标吗?如果是这样,请提供一些领域或为我指出正确的方向。
发布于 2018-08-12 06:10:45
使用GNU并行:
parallel -j0 --slf hosts.txt --nonall mycommand > out.txt但也许你想要更多的信息:
parallel -j0 --slf hosts.txt --joblog my.log --tag --nonall mycommand > out.txt发布于 2018-08-11 05:57:13
几年前,我使用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台主机,你真的需要开始安装一些工具,就像其他人在评论中提到的那样。
https://stackoverflow.com/questions/51791864
复制相似问题