【发布时间】:2018-08-10 18:03:28
【问题描述】:
由于脚本的性质(在工作中完成,在工作 RHEL 机器上完成),我无法显示代码,但我至少可以提供伪代码来帮助起点。目前:
开始循环
1) 读入主机文本文件的第一行(然后是下一行等) 文件的循环)并将其分配给变量(主机名)
2) 向主机发送 ssh -t 命令(需要 2 到 6 之间的任意时间) 分钟收到回复)
3) 记录对文本文件的响应(从读入的新主机重复循环 文本文件)
结束循环
目前我必须在夜间运行这个脚本,因为这个脚本会命中多少个系统。
我希望能够实现相同的目标并从每个主机的该文件中的命令中获取响应,但我希望同时发送命令,以便在 2 到 6 分钟之间完成一起。 但是因为这是为了工作,我不允许在系统上安装ansible;是否有另一种方法来实现这个目标?如果是这样,请提供一些领域或指出正确的方向。
【问题讨论】:
-
gnu-parallel 或附加一个简单的
&? -
&是最好的选择。伪代码回答:ssh $hostname "somecommand >./locallogfile" &在循环中,然后scp./locallogfiles 到您的主系统 2-6 分钟后。 -
@jeremysprofile 可能应该使用 >> 在这里写入文件
-
@Inder,为什么?如果他只想要此命令的输出,则远程系统的每个日志文件都应使用
>。一旦他将scp和cat移动到他的主系统,他将不得不使用它们。我承认我可能应该将其命名为remotelogfile以便更清楚,但它不会让我再编辑评论。 -
我不允许安装 ansible 而不是通过引入大量竞争条件和糟糕的超时处理来重新发明轮子,你应该问这个规则来自哪里以及为什么(不是对于这个特定的工具,但对于任何类型的工具,你必须以相同的方式
chef、puppet或 Python 中的fabric之类的库等...)通过解释说这会比它做得更好任何当地的本土解决方案。我敢肯定他们不是写本地的bash和ssh而是从外面安装的,那为什么要禁止其他与工作相关的工具呢?
标签: bash ssh command simultaneous hosts-file