首页 > 系统相关 >如何在多个 Linux 服务器上运行多个命令

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

时间:2023-06-30 23:44:59浏览次数:53  
标签:脚本 多个 命令 ssh Linux 服务器

动动发财的小手,点个赞吧!

如果你正在管理多台 Linux 服务器,并且你想在所有 Linux 服务器上运行多个命令,但你不知道该怎么做。不用担心,在这个简单的服务器管理指南中,我们将向您展示如何在多个 Linux 服务器上同时运行多个命令。

为此,您可以使用 pssh(并行 ssh)程序,这是一个用于在多个主机上并行执行 ssh 的命令行实用程序。使用它,您可以从 shell 脚本向所有 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/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 – 读取主机文件。
  • -P – 告诉 pssh 在输出到达时显示输出。
  • -I – 读取输入并发送到每个 ssh 进程。

本文由mdnice多平台发布

标签:脚本,多个,命令,ssh,Linux,服务器
From: https://www.cnblogs.com/swindler/p/17518041.html

相关文章

  • linux 使用随笔
    目录:1,ab命令一,ab命令ab网站压力测试命令的参数、输出结果的中文注解ab命令是Apache的Web服务器的性能测试工具,它可以测试安装Web服务器每秒种处理的HTTP请求。来自: http://man.linuxde.net/ab-A:指定连接服务器的基本的认证凭据;-c:指定一次向服务器发出请求数;-C:添加cookie;-g:将测......
  • Linux中yum和apt-get用法及区别
    Linux中yum和apt-get用法及区别 一般来说著名的linux系统基本上分两大类: 1.RedHat系列:Redhat、Centos、Fedora等 2.Debian系列:Debian、Ubuntu等 RedHat系列 1常见的安装包格式rpm包,安装rpm包的命令是“rpm-参数” 2包管理工具 yum 3支持tar包  Debian系列1常见......
  • Linux系统上检查用户创建日期
    1、https://cloud.tencent.com/developer/news/199201您知道如何在Linux系统上检查用户帐户创建日期吗?如果是,有什么方法可以做。你在这方面取得成功了吗?如果是,怎么办?基本上Linux操作系统不会跟踪这些信息,因此,获取这些信息的替代方法是什么?你可能会问为什么我想检查这个?是的,在......
  • linux系统OpenSSL 升级
    建议版本升级:OpenSSL1.0.2-1.0.2zd>>>>OpenSSL1.0.2:升级至1.1.1oOpenSSL1.1.1-1.1.1n>>>>OpenSSL1.1.1:升级至1.1.1oOpenSSL3.0.0、3.0.1、3.0.2>>>>OpenSSL3.0:升级至3.0.3查看版本号:opensslversion1下载安全版本:openssl官网:https://www.openssl......
  • Linux必学技能 | 17个案例带运维小白快速精通Awk命令,拿来即用
    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行地读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk有三个不同的版本:awk、nawk和gawk,未作特别说明,一般指gawk,gawk是awk的GNU版本。之......
  • Linux系统用户、用户组以及权限管理常用命令
    记录Linux系统用户、组和相关设置。用户和用户组在 /etc/group存储当前系统中的用户组信息 注意:当该组内只有一个用户,并且用户名和组名相同时,在组列表中,包含用户一列可以为空2.系统中root分组的组编号一定为03.组号1~499为系统预留的组编号,一般是预留给系统安装的软件或者服......
  • linux7 防火墙,firewall的说明及相关配置注释
    1、linux7防火墙,firewall的说明及相关配置注释防火墙RedhatEnterpriseLinux7已经默认使用firewalld作为防火墙,其使用方式已经变化。基于iptables的防火墙被默认不启动,但仍然可以继续使用。RHEL7中有几种防火墙共存:firewalld、iptables、ebtables等,默认使用firewalld作为防火墙,管......
  • Linux man命令手册使用方法,man和man5区别
    1.man手册页简介man手册页(manualpages,“手册”),是类UNIX系统最重要的手册工具。多数Linux发行版都预装了它。Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。man手册分了9个章节,每个章节都有它对应的作用,请看下表:章节名称描述1Standard......
  • Linux操作系统加固建议
    1、Linux操作系统加固建议1.1.1口令锁定策略1、执行备份(1)、redhat执行备份:#cp-p/etc/pam.d/system-auth/etc/pam.d/system-auth_bak(2)、SUSE9:#cp-p/etc/pam.d/passwd/etc/pam.d/passwd.bak(3)、SUSE10:#cp-p/etc/pam.d/common-passwor......
  • linux存放history命令的文件
    当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升。事实上,一旦你掌握了我在下面给出的15个有关Linuxhistory历史命令的例子,你就会发现使用history历史命令行将更有乐趣。1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP......