通过dsh批量管理Linux服务器

原创
系统 Linux
目前在企业网络中越来越多的出现Linux服务器,而如何方便高效的管理大量的Linux服务器是系统管理员非常关心的一个问题。现在有大量的开源管理工具,可以实现这样的管理工具,现在给大家介绍一个通过命令行有效地管理大量Linux的工具---dsh。

【51CTO独家特稿】目前在企业网络中越来越多的出现Linux服务器,而如何方便高效的管理大量的Linux服务器是系统管理员非常关心的一个问题。现在有大量的开源管理工具,可以实现这样的管理工具,现在给大家介绍一个通过命令行有效地管理大量Linux的工具---dsh。

dsh是专为在远程系统上运行Shell命令设计的,通过dsh可以简化对大量计算机的操作。dsh命令语法如下:

dsh [-m machinename | -a | -g groupname] [-f machinefile] [-M] [-q] [--wait-shell]--
commandline

常用选项:

-M:在显示远程命令执行的输出时,在前面加上主机名。

 -a:如果经常操作同一组计算机,可以创建一个全局集合的组。$HOME/.dsh/machines.list文件是全局集合的定义。在该文件中每行一个计算机的IP地址,在指定-a后,dsh就会在machines.list中列出的所有计算机上执行指定的命令。

 -q:指定使用安静模式输出。

 -m machinename:指定需要执行指定命令的计算机。

 -g groupname:指定需要执行指定命令的计算机组,主机名组在$HOME/.dsh/group/目录是定义,每个计算机组一个文件,文件名即是组外,在文件中每行一个计算机IP地址。

 -f machinefile:指定计算机列表文件。

-wait-shell:在默认情况下,dsh是并行地在计算机上运行命令。如果希望顺序地运行命令则指定--wait-shell。#p#

下面在我们一起来看看在如下图的网络中如何通过dsh有效的管理Linux服务器。

 

 

通过dsh批量管理Linux服务器

1、 dsh是通过SSH方式连接到服务器,所以需要在所有服务器上安装SSH。

2、 在srv.example.zqin上通过如下命令安装dsh。

srv:~# apt-get -y install libdshconfig1 libdshconfig1-dev dsh

3、 在使用dsh进行管理时,需要输入被管理服务器的用户名及密码,为了使用起来更加方便可使用如下命令将SSH的公钥复制到被管理服务器。

 srv:~# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
dd:e9:d3:84:fc:4c:ff:b4:b0:fa:12:fa:fd:49:3d:4d root@testsrv
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
| . o o |
| S . = o E|
| o * oo|
| . +.+o=|
| . ...+.=|
| .o++.+.|
+-----------------+
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.21:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.22:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.31:/root/.ssh/authorized_keys
srv:~# scp ~/.ssh/id_rsa.pub 192.168.159.32:/root/.ssh/authorized_keys

如果被管理的服务器比较多也可以编写个脚本来复制公钥。下面是一个复制公钥到多个服务器上的脚本。

for i in $(seq 200 253)
do
ssh 192.168.159.$i -C mkdir /root/.ssh
scp ~/.ssh/id_rsa.pub 192.168.1.$i:/root/.ssh/authorized_keys
done

4、 为了方便使用dsh,可以将所有被管理服务器分类并存放到对应文件中。

 将所有被管理服务器的IP地址(或FQDN)加入$HOME/.dsh/machines.list文件中(每行一个)。

 在$HOME/.dsh/group/目录下建立名为web的文件,并将web1、web2的IP地址(或FQDN)加入其中(每行一个)。

在$HOME/.dsh/group/目录下建立名为db的文件,并将db1、db2的IP地址(或FQDN)加入其中(每行一个)。#p#

在上述配置完成后就可以在srv上通过dsh进行批量操作了,下面我们一起来看几个例子。

1、 在db1.example.zqin上执行reboot命令。

srv:~# dsh -M -m db1.example.zqin -- reboot

2、 在$HOME/.dsh/machines.list文件中定义的所有服务器上同时执行updatedb命令。

srv:~# dsh -M -a -- updatedb

3、 在$HOME/.dsh/group/web文件中定义的所有服务上面上同时执行命令。

srv:~# dsh -M -g -- /etc/init.d/apache2 restart

作者简介:张勤(博客),MCSE、MCDBA、RHCE,从事软件开发(Delphi、Java)、项目管理、系统集成工作。曾参与多个基于Windows及Linux的大型系统集成项目,并在国内多个知名IT网站发表技术类文章。

【编辑推荐】

  1. 使用FAI+PXE批量部署Debian
  2. 虚拟化环境下System x的批量部署(一)
  3. 灵活使用ssh、dsh和pssh高效管理大量计算机

 

责任编辑:黄丹 来源: 51CTO
相关推荐

2021-08-05 17:40:05

XpanesLinux服务器

2012-09-20 09:43:33

Linux服务器串口Linux

2019-11-28 08:25:53

Linux脚本SSH

2011-03-21 15:45:55

ClusterSSH管Linux服务器

2011-06-24 13:51:32

虚拟化服务器VMware

2011-01-18 09:12:47

Linux服务器集群系统

2010-12-28 14:53:29

服务器管理器

2024-01-09 13:09:00

2012-04-18 10:54:09

2009-06-29 19:49:11

服务器刀片服务器IBM

2010-12-28 17:13:32

管理服务器

2011-01-18 09:35:29

Linux服务器集群系统

2011-01-18 09:32:54

Linux服务器集群系统

2009-04-01 13:11:01

Nehalem四核Intel

2012-06-04 16:01:29

Linux服务器日志

2009-04-28 19:38:02

LinuxSrvRepor远程监控

2011-06-16 10:52:10

SUSE管理器Linux

2009-02-10 15:49:00

Linux服务器服务器安全网络服务器

2011-02-17 09:14:32

2014-05-30 11:14:11

JournaldLinux服务器
点赞
收藏

51CTO技术栈公众号