同时获取多台机器的输出命令

同时获取多台机器的输出命令

我在同一局域网上有多台机器,我想通过一条命令获取所有机器的状态,例如通过top调度nvidia-smi

nvidia-smi-all

来自其中一台机器。输出将是所有机器的文本输出的简单串联,顺序无关紧要。

我们不想安装任何资源管理软件(Kubernetesslarm)。我认为一旦我有了所有机器的列表ip,这应该不是什么难题,但我在网上找不到任何东西,可能不知道要找什么。

希望问题清楚,谢谢。

答案1

对于这种基于 Unix shell 的操作,我使用了 Pssh(并行 ssh),它允许您创建服务器列表,然后 ssh 命令使用多个线程并行向它们发出请求。

要在 Ubuntu 20.04 和 20.10 上安装,只需运行

sudo apt install pssh

该软件包包含用于此目的的 pssh 命令。
例子 创建您的主机/集群文件(例如 myCluster.hosts)

192.168.0.100:2222
192.168.0.101:22
192.168.0.102:22

然后使用 pssh 命令在每台主机上执行‘uptime’命令。

parallel-ssh -h myCluster.hosts uptime
[1] 16:09:03 [SUCCESS] 192.168.0.100:2222 16:09:01 up  1:00,  2 users,  load average: 0.07, 0.02, 0.00
[2] 16:09:03 [SUCCESS] 192.168.0.101:22 06:39:03 up  1:00,  2 users,  load average: 0.00, 0.06, 0.09
[3] 16:09:03 [SUCCESS] 192.168.0.102:22 08:00:01 up  1:00,  8 users,  load average: 0.00, 0.09, 0.18

该软件包还附带了 scp、rsync 等非常强大的工具的并行版本。建议您先在单台机器上使用试运行选项/测试,以避免破坏整个集群。

相关内容