nodeshell(8) -- Execute command on many nodes in a noderange through ssh
=========================================================================

## SYNOPSIS

`nodeshell [options] <noderange> <command to execute on each node>`

## DESCRIPTION

Allows execution of a command on many nodes in parallel.  Like noderun(8), it
accepts and interpolates confluent attribute expressions as documented in 
nodeattribexpressions(5).  `nodeshell` provides stdout as stdout and stderr
as stderr, unlike psh which combines all stdout and stderr into stdout.

## OPTIONS
  
* `-c COUNT`, `-f COUNT`, `--count=COUNT`
  Specify the maximum number of instances to run concurrently

* `-l LOGINNAME`, `--loginname=LOGINNAME`
  Username to use when connecting, defaults to current user.

* `-m MAXNODES`, `--maxnodes=MAXNODES`
  Specify a maximum number of nodes to run remote ssh command to, prompting
  if over the threshold
 
* `-n`, `--nonodeprefix`
  Do not prefix output with node names  

* `-p PORT`, `--port=PORT`
  Specify a custom port for ssh

* `-s SUBSTITUTION`, `--substitutename=SUBSTITITUTION`
  Specify a substitution name instead of the nodename.  If no {} are in the substitution,
  it is considered to be an append.  For example, '-s -ib' would produce 'node1-ib' from 'node1'.
  Full expression syntax is supported, in which case the substitution is considered to be the entire
  new name. {node}-ib would be equivalent to -ib.  For example, nodeshell -s {bmc} node1 
  would ssh to the BMC instead of the node.

## EXAMPLES

* Running `echo hi` on for nodes:
  `# nodeshell n1-n4 echo hi`  
  `n1: hi`  
  `n2: hi`  
  `n3: hi`  
  `n4: hi`  

* Setting a new static ip address temporarily on secondary interface of four nodes:
  `# nodeshell n1-n4 ifconfig eth1 172.30.93.{n1}`

* If wanting to use literal {} in the command, they must be escaped by doubling:
  `# nodeshell n1-n4 "ps | awk '{{print $1}}'"`
  
## SEE ALSO

noderun(8)
