首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时向多个系统发送ssh -t命令(不带ansible)

同时向多个系统发送ssh -t命令(不带ansible)
EN

Stack Overflow用户
提问于 2018-08-11 02:03:29
回答 2查看 161关注 0票数 0

由于脚本的性质(在工作中,在工作RHEL机器上完成),我不能显示代码,但我至少可以提供伪代码来帮助开始。目前:

开始循环

1)读取文件的主机文本文件的第一行(然后是下一行等等),并将其分配给一个变量(主机名)

2)向主机发送ssh -t命令(需要2-6分钟才能收到响应)

3)记录对文本文件的响应(对从文本文件中读取的新主机重复循环)

结束循环

目前,我必须在夜间运行此脚本,因为此脚本命中了多少系统。

我希望能够实现相同的目标,并从每个主机的该文件中的命令获得响应,但我希望命令同时发出,以便总共需要2到6分钟。但是因为这是为了工作,所以我不允许在系统上安装ansible;还有其他方法可以实现这个目标吗?如果是这样,请提供一些领域或为我指出正确的方向。

EN

回答 2

Stack Overflow用户

发布于 2018-08-12 06:10:45

使用GNU并行:

代码语言:javascript
复制
parallel -j0 --slf hosts.txt --nonall mycommand > out.txt

但也许你想要更多的信息:

代码语言:javascript
复制
parallel -j0 --slf hosts.txt --joblog my.log --tag --nonall mycommand > out.txt
票数 1
EN

Stack Overflow用户

发布于 2018-08-11 05:57:13

几年前,我使用sh完成了这项工作,使用的内容如下:

代码语言:javascript
复制
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台主机,你真的需要开始安装一些工具,就像其他人在评论中提到的那样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51791864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档