Pdsh: Difference between revisions
Created page with "The pdsh command is a parallel version of the dsh (Distributed Shell). It is used to run commands on multiple remote hosts in parallel and supports a number of remote shell programs including SSH. == Cheat sheet == {| class="wikitable" !Action !Command |- |Run a command on all hosts |<code>pdsh -a uptime</code> |- |Run a command on a set of hosts by hostname Or by a specific gender (ie. attribute), see below. |<code>pdsh -w node[0-10] uptime</code><code>pdsh -w cpus=8 u..." |
No edit summary |
||
| Line 8: | Line 8: | ||
|Run a command on all hosts | |Run a command on all hosts | ||
|<code>pdsh -a uptime</code> | |<code>pdsh -a uptime</code> | ||
|- | |||
|Run a command on all hosts EXCEPT one | |||
|<code>pdsh -a -x exclude-node uptime</code> | |||
|- | |- | ||
|Run a command on a set of hosts by hostname | |Run a command on a set of hosts by hostname | ||
| Line 16: | Line 19: | ||
|<code><nowiki>pdsh -a cat /etc/redhat-release | dshbak -c</nowiki></code> | |<code><nowiki>pdsh -a cat /etc/redhat-release | dshbak -c</nowiki></code> | ||
|} | |} | ||
== Installation == | |||
You can install pdsh from the epel repo. | |||
{{Highlight | |||
| code = # yum -y install epel-release | |||
# yum -y install pdsh pdsh-rcmd-ssh | |||
| lang = terminal | |||
}} | |||
Alternatively, install from source from the GitHub repo at: https://github.com/chaos/pdsh | |||
=== Modules === | |||
Run <code>pdsh -L</code> to list all remote command modules available. | |||
For SSH support, you will need to install the <code>pdsh-rcmd-ssh</code> package. | |||
== Configuration == | == Configuration == | ||
=== Genders file === | === Genders file === | ||
The genders file can be used to give attributes to nodes in a cluster. It can be thought of as groups that can be used as a target when running pdsh commands. | The genders file can be used to give attributes to nodes in a cluster. It can be thought of as groups that can be used as a target when running pdsh commands. While the genders file isn't required, it's still a good idea to have set up because it allows the <code>-a</code> option to function properly. | ||
The genders file is usually located at <code>/etc/genders</code>. Each line can contain one or more hosts and attributes are given as a comma delimited list. Here is an example genders file: | The genders file is usually located at <code>/etc/genders</code>. Each line can contain one or more hosts and attributes are given as a comma delimited list. Here is an example genders file: | ||
| Line 36: | Line 53: | ||
* Only cluster A nodes with <code>pdsh -w cluster-a</code> | * Only cluster A nodes with <code>pdsh -w cluster-a</code> | ||
* Only nodes with 8 CPUs with <code>pdsh -w cpus=8</code> | * Only nodes with 8 CPUs with <code>pdsh -w cpus=8</code> | ||
== See also == | |||
* Libgenders man page talks about using genders and target grouping - https://linux.die.net/man/3/libgenders | |||
Revision as of 22:55, 23 January 2023
The pdsh command is a parallel version of the dsh (Distributed Shell). It is used to run commands on multiple remote hosts in parallel and supports a number of remote shell programs including SSH.
Cheat sheet
| Action | Command |
|---|---|
| Run a command on all hosts | pdsh -a uptime
|
| Run a command on all hosts EXCEPT one | pdsh -a -x exclude-node uptime
|
| Run a command on a set of hosts by hostname
Or by a specific gender (ie. attribute), see below. |
pdsh -w node[0-10] uptimepdsh -w cpus=8 uptime
|
| Collect the OS version on all hosts and group it | pdsh -a cat /etc/redhat-release | dshbak -c
|
Installation
You can install pdsh from the epel repo.
# yum -y install epel-release
# yum -y install pdsh pdsh-rcmd-ssh
Alternatively, install from source from the GitHub repo at: https://github.com/chaos/pdsh
Modules
Run pdsh -L to list all remote command modules available.
For SSH support, you will need to install the pdsh-rcmd-ssh package.
Configuration
Genders file
The genders file can be used to give attributes to nodes in a cluster. It can be thought of as groups that can be used as a target when running pdsh commands. While the genders file isn't required, it's still a good idea to have set up because it allows the -a option to function properly.
The genders file is usually located at /etc/genders. Each line can contain one or more hosts and attributes are given as a comma delimited list. Here is an example genders file:
ca-controller management
ca-login cluster-a,login
ca[001-168] cluster-a,cpus=4
cb-login cluster-b,login
cb[091-320] cluster-b,cpus=8
Using this example, you can target:
- Only the control node with
pdsh -w management - Only cluster A nodes with
pdsh -w cluster-a - Only nodes with 8 CPUs with
pdsh -w cpus=8
See also
- Libgenders man page talks about using genders and target grouping - https://linux.die.net/man/3/libgenders