如何在多个Linux服务器上运行多个命令

如果您正在管理多个Linux服务器,并且想要在所有Linux服务器上运行多个命令,但是您不知道如何执行此操作。

如果您正在管理多个Linux服务器,并且想要在所有Linux服务器上运行多个命令,但是您不知道如何执行此操作。 无需担心,在这个简单的服务器管理指南中,我们将向您展示如何在多个Linux服务器上同时运行多个命令。

为了达到这个目的,你可以使用pssh(并行ssh)程序 ,这是一个命令行工具,用于在多个主机上并行执行ssh。 有了它,你可以从shell脚本发送输入到所有的ssh进程。

要求

  1. 安装Pssh以在多个远程Linux服务器上运行命令
  2. 您必须对所有远程服务器使用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主机别名文件

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中的多个服务器上执行多个命令。 您可以通过下面的评论部分分享有关此主题的任何想法。


分享按钮