pdsh的全称是parallel distributed shell,与pssh类似,pdsh可并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时,使用这个命令可达到事半功倍的效果。同时,pdsh还支持交互模式,当要执行的命令不确定时,可直接进入pdsh命令行,非常方便。

一、 pdsh应用场景

pdsh的应用场景基本上与pssh相同,都用于大批量服务器的配置、部署、文件复制等运维操作。在使用pdsh时,仍需要配置本地主机和远程主机间的单向ssh信任。另外,pdsh还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上,这在大规模的文件分发环境下是非常有用的。

pdsh可以通过多种方式在远程主机上运行命令,默认是rsh方式,另外也支持ssh、mrsh、qsh、mqsh、krb4、xcpu等多种rcmd模块,这个可以在运行命令时通过参数指定。

二、pdsh的安装与语法

1、pdsh的安装过程

pdsh的安装非常简单,有rpm包和源码包两种方式,大家可根据自己的喜好选择适合自己的安装方式。可以在http://code.google.com/p/pdsh/ 下载最新的源码包进行编译安装,目前最新版本为pdsh-2.29,这里下载的源码包为pdsh-2.29.tar.bz2。编译安装过程如下:

[root@server ~]# tar jxvf pdsh-2.29.tar.bz2

[root@server ~]# cd pdsh-2.29

[root@server pdsh-2.29]#./configure --with-ssh --with-rsh --with-mrsh --with-mqshell  \

> --with-qshell  --with-dshgroups --with-machines=/etc/pdsh/machines

[root@server pdsh-2.29]# make

[root@server pdsh-2.29]# make install

在执行configure阶段,“--with-ssh”参数表示启用ssh模块,其他参数都有类似的含义,而“--with-dshgroups”表示启用主机组支持,启用此参数后,就可以将一组主机列表写入一个文件并放到~/.dsh/group或/etc/dsh/group目录下,然后通过pdsh的“-g”参数进行调用。最后的参数“--with-machines”是“--with-dshgroups”参数的扩展,通过将所有要管理的主机列表都写入指定的/etc/pdsh/machines文件中,接着通过pdsh的“-a”参数调用,最终完成所有主机的便捷管理。

完成安装后,可以通过“pdsh –V”查看pdsh的版本号以及可使用的模块信息,操作如下:

[opsuser@server ~]$ pdsh -V

pdsh-2.29

rcmd modules: ssh,rsh,exec (default: rsh)

misc modules: machines,dshgroup

此外,也可以通过“pdsh -L”来显示当前所有加载的模块信息。在pdsh安装完成后,还有一个可用的工具pdcp,后面将详细讲述pdsh和pdcp两个命令的用法。

2、pdsh的语法介绍

安装pdsh完成后,通过执行“pdsh –h”和“pdcp –h”即可得到两个命令的完整用法,由于两个命令的参数大同小异,因此这里以pdsh命令为主介绍一些常用的参数及含义。下表是pdsh常用的参数及其含义。

-w host,host 指定远程主机,可以指定多个,每个主机用逗号隔开,host可以是主机名也可以是IP地址。此参数非常灵活,常用的形式有:

pdsh -w ssh:user001,ssh:user002,ssh:user003 "date"

此命令用来查看user001、user002、user003主机上的时间,其中ssh表示在远程主机上执行命令的形式,默认是rsh。

pdsh -w ssh:user00[1-10] "date"

此命令用于在user001到user0010上执行date命令。

pdsh -w ssh:user0[10-31],/1$/ "uptime"

此命令在选择远程主机时使用了正则表达式,表示在user010到user031中选择以1结尾的主机名,即在user011、user021、user031上执行uptime命令

-R 指定使用rcmd的模块名,默认是rsh。如果要选择ssh,可以通过如下方式指定:

pdsh -R ssh -w user00[1-10] "date"

-l 指定在远程主机上使用的用户名称。例如:

pdsh -R ssh -l opsuser -w user00[1-9] "date"

-x 此参数用来排除某些或某个主机,例如:

pdsh -R ssh -l opsuser -w user00[1-9] -x user005,user007 "date"

-t 指定连接远程主机的超时时间,以秒为单位,默认是10秒,可以通过此参数修改默认值,例如:pdsh -R ssh -w slave000[1-9]  -t 15  "date"

-u 设置远程命令执行的超时时间,以秒为单位,以ssh方式连接时,默认时间为无限

-f 设置同时连接到远程主机的个数

-N 此参数用来关闭远程主机所返回结果中的主机名显示

-a 通过此参数可以指定所有的远程主机,设置此参数后,pdsh默认会查看/etc/machines文件中的主机列表,要改变此路径,在编译pdsh时通过“--with-machines”参数指定即可

-g 此参数用来指定一组远程主机,在编译pdsh时可以通过“--with-dshgroups”参数来激活此选项,默认可以将一组主机列表写入一个文件中并放到本地主机的~/.dsh/group或/etc/dsh/group目录下,这样就可以通过“-g”参数调用了。例如:pdsh -R ssh -g userhosts "date",其中“userhosts”是一个主机列表文件,可以将此文件放在~/.dsh/group或/etc/dsh/group目录下

-X 此参数用来排除指定组内的所有主机,经常与“-a”参数一起使用。例如:

pdsh -R ssh -a -X userhosts  "date"

-q 此参数可以列出pdsh执行时的一些配置信息

-V 此参数可以查看软件的版本信息以及可用的模块信息

pdsh工具的使用的更多相关文章

  1. 自动化运维工具-pdsh工具安装配置及简单使用讲解

    1.先决条件: 安装pssh工具的主机针对远程主机需要配置免秘钥认证: ssh-keygen -t rsa ssh-copy-id [remotehost] 2.下载pssh工具安装介质: https ...

  2. 并行管理工具——pdsh

    1. pdsh安装2. pdsh常规使用2.1 pdsh2.2 pdcp 并行管理的方式有很多种: 命令行 一般是for循环 脚本 一般是expect+ssh等自编辑脚本 工具 pssh,pdsh,m ...

  3. pssh,pdsh,mussh,cssh,dsh运维工具介绍

    pssh 1 安装:#wget http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup.py#wget http://paralle ...

  4. 自动化运维工具pssh、pdsh、pscp

    pssh命令是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认证访问. 以下 ...

  5. 运维工具pssh和pdsh安装和使用

    1. pssh安装与使用 1.1 pssh安装 [root@server]# wget http://peak.telecommunity.com/dist/ez_setup.py [root@ser ...

  6. Linux海王 之 pdsh (并行管理工具)

    文章目录 安装 使用 示例 -w 指定主机 -l 指定用户 -g指定用户组 主机列表 交互式界面 pdsh是一个多线程远程shell客户机,它在多个远程主机上并行执行命令 pdsh可以使用几种不同的远 ...

  7. pdsh使用

    原文地址:http://bbs.chinaunix.net/thread-2002080-1-1.html 当我们管理数以十计或者更多的集群系统时,往往需要在每台机器上执行同样的命令,或者拷贝同样的文 ...

  8. Linux运维式具之pdsh

    做系统运维的时候,我们经常需要同时在多台机器上执行相同的命令,这个时候可以使用类似pssh,pdsh的并行执行shell的工具. 当然,之前在没有使用这些工具之前,如果有ssh无密码互访,我们可以自己 ...

  9. Linux下批量管理工具PSSH

    pssh命令 pssh命令是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的,类似pdsh,个人认为相对pdsh更为简便,使用必须在各个服务器上配置好密钥认 ...

随机推荐

  1. 深入玩转K8S之利用Label控制Pod位置

    首先介绍下什么是Label? Label是Kubernetes系列中一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到 ...

  2. CentOS升级kernel

    CentOS升级kernel 升级命令: yum update kernel yum update kernel-devel yum update kernel-firmware yum update ...

  3. [UE4] TSharedPtr, TWeakObjectPtr and TUniquePtr

    转自:https://dawnarc.com/2018/07/ue4-tsharedptr-tweakobjectptr-and-tuniqueptr/ UE4 的 TSharedPtr.TWeakO ...

  4. 【常用技巧】标准模板库(STL)

    [常用技巧]标准模板库(STL) 在前几个章节中我们已经使用了诸如队列.堆.堆栈.vector 等标准模板库中的模板,切身感受到了它给我们带来的极大便利.在本节中,我们还要介绍两种标准模板——stri ...

  5. Oracle中恢复drop掉的表中的数据

    今天同事不小心把生产上的一张表直接drop掉了,没有做备份,哥们慌的一匹,来找我这个小白来帮忙解决,于是心血来潮简单总结一下. 其实在oralce中,用drop删掉一张表,其实不会真正的删除,只是把表 ...

  6. 总结一些Java试题

    1.方法重载和重写的区别: 重载是在同一个类中,同名不同参 重写是在不同类中,同名同参 2.抽象类的特点: 抽象方法和抽象类都要被关键词abstract修饰 抽象方法一定在抽象类中 抽象类不能new对 ...

  7. Keyboarding

    题目描述 思路 一开始想先写一个bfs,目标字符串要加上一个'*',表示这是一个换行符,然后一个字母一个字母的找,每次重置一下vis数组,bfs返回的结果再加上1,表示要打印这个字母,结果第一个样例没 ...

  8. t100 debug常用指令

    1.     r.d 程式代號 Find (Ctrl+F) => Find Next(F3). 設中斷點(Toggle):Double Click => Run/Continue the ...

  9. MongoDB的安装,mongod和mongo的区别

    一. mongoDB安装路径 安装路径(最新4.0.11):https://www.mongodb.com/download-center/community?jmp=nav 建议另外找路径下载,外网 ...

  10. C# vb .net实现焦距灰度特效滤镜

    在.net中,如何简单快捷地实现Photoshop滤镜组中的焦距灰度效果呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授权 第 ...