系统管理员可能需要管理大量服务器,不管是小型云环境还是大型服务器集群,集中管理服务器都是系统管理者必备技能。DSH小工具可以让用户在多台服务器上运行命令。
DSH是“分布式 Shell ”或“ Dancer's Shell ”的缩写,是大多数主要 Linux 发行版中免费提供的工具,如果发行版的软件包存储库中不包含它,还可以轻松地从源代码构建。
在Linux中安装DSH,如果是Debian/Ubuntu环境:
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
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。
输入想要访问的机器的凭据后,让我们对所有机器运行一个简单的命令,例如uptime 。
dsh -aM -c uptime
运行dsh并将“ ”选项传递a给它,该选项表示将“ uptime ”命令发送到“ /etc/dsh/machines.list ”中列出的“ ALL ”机器。指定“ -M”选项,该选项表示返回“机器名称”(在“ /etc/dsh/machines.list ”中指定)以及uptime命令的输出。(在多台机器上运行命令时进行排序非常有用)。
-c”选项代表“要执行的命令”,在本例中为“ uptime ”。
DSH还可以在“ /etc/dsh/groups/ ”文件中配置计算机组,其中是包含计算机列表的文件,其格式与“ /etc/dsh/machines.list ”文件相同。在组上运行dsh时,请在“ ”选项后指定组名-g。
对于基于 Red Hat 的 系统,您需要在“ /usr/local/etc/ ”目录中创建一个名为“ groups ”的文件夹。在该“ groups ”目录中,您可以创建一个名为“ cluster ”的文件。
例如,在“ cluster ”组文件“ /etc/dsh/groups/cluster ”或“ /usr/local/etc/groups/clusterw ”中列出的所有机器上运行“ ”命令。
dsh -M -g cluster -c w
此外DSH还提供更多灵活性,如传输文件、安装软件、添加路由等。