Linux工具dsh使用 2016-03-30 20:00

基本介绍

dsh is "Distributed Shell". 可在基于互信的Linux主机之间,批量执行命令,免于一台一台主机ssh登录,重复执行命令的麻烦。

安装

先安装libdshconfig:

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

再安装dsh:

wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz
tar -zxf dsh-0.22.0.tar.gz
cd dsh-*
./configure
make
make install

配置

配置文件

全局配置文件:/usr/local/etc/dsh.conf

全局machinelist文件:/usr/local/etc/machines.list

全局分组machinelist文件:/usr/local/etc/group/{GROUPNAME}

用户machinelist文件:{HOME}/.dsh/machines.list

用户分组machinelist文件:{HOME}/.dsh/group/{GROUPNAME}

  • 更改shell类型

更改配置文件中的remoteshell为ssh:

remoteshell=rsh

改为

remoteshell=ssh
  • 创建machinelist文件

machinelist文件用于标识需要登录哪一些配置文件执行命令。

文件名:/usr/local/etc/machines.list

ctrl
data01
data02
data03

使用

第一个命令

[root@cheyo etc]# dsh -aM -c date
ctrl: Wed Mar 30 20:24:36 CST 2016
data01: Wed Mar 30 20:24:36 CST 2016
data02: Wed Mar 30 20:24:36 CST 2016
data03: Wed Mar 30 20:24:36 CST 2016
[root@cheyo etc]#
[root@cheyo etc]# dsh -aM  -c 'date +"%Y-%m-%d %H:%M:%S"'
ctrl: 2016-03-30 20:36:35
data01: 2016-03-30 20:36:35
data02: 2016-03-30 20:36:35
data03: 2016-03-30 20:36:35
[root@cheyo etc]#
  • -a表示对所有machinelist中的主机进行操作;
  • -M表示命令输出结果中打印相应的主机名;
  • -c表示要执行的命令;

主机分组

创建一个新的machine组,名叫datagroup:

[root@cheyo etc]# cat > /usr/local/etc/group/datagroup << EOF
> data01
> data02
> data03
> EOF
[root@cheyo etc]# cat /usr/local/etc/group/datagroup
data01
data02
data03
[root@cheyo etc]#

对指定主机组中的主机执行命令:

dsh -M -g datagroup -c date
Tags: #dsh    Post on Linux