DSH(分布式Shell): 在多个Linux服务器上运行命令

服务器系统管理员都知道,能够在短时间内监控和管理多个机器是多么重要,最好能做到最少的物理操作。无论是小型云环境还是大型服务器集群,集中管理计算机的能力至关重要。

为了解决这个问题,我将向您展示如何使用一个非常实用的工具——DSH(分布式 Shell),它可以让用户在多台机器上运行命令。

DSH 是 “Distributed Shell” 或 “Dancer’s Shell” 的缩写,它是一个在大多数主流 Linux 发行版中都可以免费获得的工具,如果您的发行版没有包含该工具的安装包,也可以从源代码编译安装。

在 Linux 上安装 DSH(分布式 Shell)

本文假设您正在使用 Debian 或 Ubuntu 系统。如果您使用的是其他发行版,请相应地替换适合的包管理命令。

在 Debian/Ubuntu 上安装 DSH

您可以使用以下命令在终端中安装 DSH:

sudo apt install dsh

在 RHEL/CentOS 上安装 DSH

在 RHEL 或 CentOS 等基于 Red Hat 的发行版中,您需要先从源代码编译安装 DSH。首先,确保编译并安装 `libdshconfig` 库:

wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz
tar xfz libdshconfig*.tar.gz
cd libdshconfig-*
./configure; make
sudo make install

然后,编译并安装 DSH:

wget https://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar xfz dsh-0.22.0.tar.gz
cd dsh-*
./configure; make
sudo make install

如何使用 DSH 在 Linux 上运行命令

DSH 的主要配置文件是 `/etc/dsh/dsh.conf`(Debian 系统)或 `/usr/local/etc/dsh.conf`(Red Hat 系统)。这个配置文件非常简单,但由于 rsh 是一个不加密的协议,我们将使用 SSH 作为远程 Shell。

使用您喜欢的文本编辑器打开配置文件,找到以下行:

remoteshell =rsh

并将其改为:

remoteshell =ssh

除了这个设置,您还可以传递其他选项,详细信息可以查看 DSH 的手册页。接下来,我们查看下一个配置文件 `/etc/dsh/machines.list`(Debian 系统)。对于 Red Hat 系统,您需要在 `/usr/local/etc/` 目录下创建一个名为 `machines.list` 的文件。

配置机器列表

`machines.list` 文件的语法非常简单,每行写一个机器的凭据(主机名、IP 地址或 FQDN)。例如:

172.16.25.125
172.16.25.126

配置无密码 SSH

当同时访问多台机器时,建议在所有机器上设置基于密钥的无密码 SSH 认证,这不仅方便访问,还能增强安全性。

运行命令

一旦您配置好了机器列表,就可以在所有机器上运行简单的命令,比如查看系统的 `uptime`(运行时间):

dsh -aM -c uptime

示例输出:

172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05
172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05

解析 `dsh` 命令

我们运行了 `dsh` 命令,并传递了几个选项:

– `-a` 选项表示将 `uptime` 命令发送到 `/etc/dsh/machines.list` 文件中列出的 **所有** 机器。

– `-M` 选项表示返回机器的名称(在 `machines.list` 文件中指定)以及命令的输出。这对于当在多台机器上运行命令时,非常有用,可以帮助我们快速分辨哪个机器输出了什么。

– `-c` 选项后面跟着要执行的命令,这里是 `uptime`。

配置机器组

DSH 还可以通过 `/etc/dsh/groups/` 文件配置机器组,在该文件中,列出的机器使用与 `machines.list` 文件相同的格式。运行 DSH 时,指定组名即可。

对于基于 Red Hat 的系统,您需要在 `/usr/local/etc/` 目录下创建一个名为 `groups` 的文件夹,在该文件夹下创建一个名为 `cluster` 的文件。

例如,在 `cluster` 组文件中列出所有机器后,运行 `w` 命令来查看它们的状态:

dsh -M -g cluster -c w

DSH 提供了更多的灵活性,本文仅展示了它的一部分功能。除了执行命令,DSH 还可以用于传输文件、安装软件、添加路由等。

对于需要管理大规模网络的系统管理员来说,DSH 是一个非常宝贵的工具。

未经允许不得转载:A5数据 » DSH(分布式Shell): 在多个Linux服务器上运行命令

相关文章

contact