如何在多台 Linux 服务器上运行多条命令
如果您正在管理多台 Linux 服务器,并且想要在所有 Linux 服务器上运行多个命令,但又不知道该怎么做。不用担心,在这个简单的服务器管理指南中,我们将向您展示如何同时在多台 Linux 服务器上运行多个命令。
要实现这一点,您可以使用pssh(并行 ssh)程序,这是一个命令行实用程序,用于在多台主机上并行执行 ssh。有了它,您可以从 shell 脚本向所有 ssh 进程发送输入。
要求
- 安装 Pssh 以在多个远程 Linux 服务器上运行命令
- 您必须对所有远程服务器使用SSH 无密码身份验证。
创建 Shell 脚本
因此,您需要首先准备一个脚本,其中包含要在不同服务器上执行的 Linux 命令。在此示例中,我们将编写一个脚本,从多个服务器收集以下信息:
- 检查服务器的正常运行时间
- 检查谁登录了以及他们在做什么
- 根据内存使用情况列出前 5 个正在运行的进程。
首先使用您最喜欢的编辑器创建一个名为commands.sh的脚本。
# vi commands.sh
接下来,将以下命令添加到脚本中,如下所示。
#!/bin/bash ############################################################################### #Script Name : commands.sh #Description : execute multiple commands on multiple servers #Author : Aaron Kili Kisinga #Email : aaronkilik@gmail.com ################################################################################ echo # show system uptime uptime echo # show who is logged on and what they are doing who echo # show top 5 processe by RAM usage ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6 exit 0
保存文件并关闭。然后使脚本可执行,如下所示。
# chmod +x commands.sh
创建 PSSH 主机文件
接下来,在hosts.txt文件中添加您想要运行命令的服务器列表,格式为[user@]host[:port]
或仅提供服务器 IP 地址。
但是我们建议您使用可以在.ssh/config文件中指定的 ssh 别名,如如何配置自定义 ssh 连接以简化远程访问中所述。
这种方法更高效、更可靠,它允许您为每个远程服务器指定配置选项(例如主机名、识别文件、端口、用户名等)。
以下是我们的示例 ssh 主机别名文件,又名用户特定的 ssh 配置文件。
# vi ~/.ssh/config
接下来,创建一个hosts.txt文件,在这里您可以简单地指定别名(在.ssh/config 文件中使用 Host 关键字定义的名称),如下所示。
# vi hosts.txt
添加服务器别名。
server1 server2 server3
通过脚本在多个 Linux 服务器上运行命令
现在通过指定hosts.txt文件以及包含在多个远程服务器上运行的多个命令的脚本来运行以下pssh命令。
# pssh -h hosts.txt -P -I<./commands.sh
上述命令中使用的标志的含义:
-h
– 读取 hosts 文件。-P
– 告诉 pssh 在输出到达时显示它。-I
– 读取输入并发送到每个 ssh 进程。
就是这样!在本文中,我们展示了如何在 Linux 中的多台服务器上执行多个命令。您可以通过下面的评论部分分享与此主题相关的任何想法。