DSH (Dancer's Shell) - 在多个 Linux 主机上运行命令
系统管理员非常清楚能够在短时间内监控和管理大量机器的重要性,最好是通过最少的物理移动。无论是小型云环境还是大型服务器集群,集中管理计算机的能力都是至关重要的。
为了部分实现这一目标,我将向您展示如何使用一个名为 DSH(舞者 shell/分布式 shell)的漂亮小工具,它允许用户跨多台机器运行命令。
什么是 DSH?
DSH 是“Distributed Shell”或“Dancer's Shell”的缩写,它是大多数主要 Linux 发行版上免费提供的工具,但也可以通过如果您的发行版未将其包含在其软件包存储库中,则可以轻松地从源构建。
在Linux中安装DSH(分布式Shell)
在本教程的范围内,我们将假设一个 Debian/Ubuntu 环境。如果您使用其他发行版,请用适当的命令替换您的包管理器。
在基于 Debian 的发行版上,您可以在终端中使用以下 apt 命令安装 DSH。
sudo apt install dsh
在基于 RHEL 的发行版上,您需要从源 tar 球编译它,但在此之前,请确保编译并安装“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
如何在 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”的文件目录。
这里的语法非常简单。您所要做的就是每行输入一个计算机的凭据(主机名、IP 地址或FQDN)。
注意:当同时访问多台计算机时,您应该在所有计算机上设置基于密钥的无密码 SSH。这不仅可以轻松访问,而且从安全角度来看,它还可以强化您的机器。
我的“/etc/dsh/machines.list”或“/usr/local/etc/machines.list”文件显示:
172.16.25.125
172.16.25.126
输入要访问的计算机的凭据后,让我们运行一个简单的命令,例如对所有计算机运行正常运行时间。
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”命令发送到“uptime” “/etc/dsh/machines.list”中列出的计算机的 >ALL”。
接下来,我们指定了“-M
”选项,该选项表示返回“机器名称”(在“/etc/dsh/machines.list<”中指定)“)以及 uptime 命令的输出。 (对于在多台机器上运行命令时进行排序非常有用)。
“-c
”选项代表“要执行的命令”,在本例中为“正常运行时间”。
DSH 还可以在“/etc/dsh/groups/”文件中配置计算机组,其中的文件包含与格式相同的计算机列表“/etc/dsh/machines.list”文件。在组上运行 dsh 时,请在“-g
”选项后指定组名称。
对于基于 Red Hat 的系统,您需要在“/usr/local/etc/”目录中创建一个名为“groups”的文件夹。在该“groups”目录中,您创建一个名为“cluster”的文件。
例如,在“cluster”组文件“/etc/dsh/groups/cluster”中列出的所有计算机上运行“w
”命令”或“/usr/local/etc/groups/cluster”。
dsh -M -g cluster -c w
DSH 提供了更大的灵活性,本教程仅涉及表面。除了执行命令之外,DSH 还可用于传输文件、安装软件、添加路由等等。
对于负责大型网络的系统管理员来说,这是无价的。