相关疑难解决方法(0)

在许多服务器上通过 SSH 自动运行命令

.txt 文件中有一个 IP 地址列表,例如:

1.1.1.1
2.2.2.2
3.3.3.3
Run Code Online (Sandbox Code Playgroud)

每个 IP 地址后面都有一个服务器,并且在每个服务器上都有一个在端口 22 上运行的 sshd。并非每个服务器都在known_hosts列表中(在我的 PC 上,Ubuntu 10.04 LTS/bash)。

如何在这些服务器上运行命令并收集输出?

理想情况下,我想在所有服务器上并行运行这些命令。

我将在所有服务器上使用公钥身份验证。

以下是一些潜在的陷阱:

  • ssh 提示我将给定的服务器 ssh 密钥放入我的known_hosts文件中。
  • 给定的命令可能返回非零退出代码,表明输出可能无效。我需要认识到这一点。
  • 与给定服务器的连接可能无法建立,例如由于网络错误。
  • 应该有一个超时,以防命令运行的时间比预期的要长,或者服务器在运行命令时出现故障。

服务器是 AIX/ksh(但我认为这并不重要。

scripting ssh parallelism

55
推荐指数
5
解决办法
22万
查看次数

SSH 连接到文件中的多个主机并运行命令失败 - 仅转到第一个主机

我有这个脚本:

#!/bin/sh
SERVERLIST=hosts
ICMD='cat /etc/redhat-release'
while read SERVERNAME
do
   ssh $SERVERNAME $ICMD
done < "$SERVERLIST"
Run Code Online (Sandbox Code Playgroud)

随着hosts就像:

hostname
hostname
hostname
Run Code Online (Sandbox Code Playgroud)

当我运行脚本时,./run.sh它只会转到单个主机并停止。为什么不读取整个主机列表?

ssh

8
推荐指数
2
解决办法
867
查看次数

标签 统计

ssh ×2

parallelism ×1

scripting ×1