如果您正在管理多个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 : [email protected] ################################################################################ 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别名,这个别名可以在.ssh / config文件中指定,如何配置自定义ssh连接来简化远程访问。
这种方法更加高效和可靠,它允许您为每个远程服务器指定配置选项(例如主机名,标识文件,端口,用户名等)。
以下是我们的示例ssh主机别名文件aka用户特定的ssh配置文件。
# vi ~/.ssh/config
SSH主机别名文件
接下来,创建一个hosts.txt文件,在这里您可以简单地指定别名(在.ssh / config文件中使用Host关键字定义的名称),如图所示。
# vi hosts.txt
添加服务器别名。
server1 server2 server3
在多个Linux服务器上通过脚本运行命令
现在通过指定hosts.txt文件以及包含多个命令的脚本在多个远程服务器上运行,运行以下pssh命令。
# pssh -h hosts.txt -P -I<./commands.sh
上述命令中使用的标志的含义:
-
-h
- 读取主机文件。 -
-P
- 告诉pssh在到达时显示输出。 -
-I
- 读取输入并发送到每个ssh进程。
在远程服务器上运行多个命令
而已! 在本文中,我们展示了如何在Linux中的多个服务器上执行多个命令。 您可以通过下面的评论部分分享有关此主题的任何想法。