# 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=SUBSTITUTION` 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.
- `-t TIMEOUT`, `--timeout=TIMEOUT` Timeout in seconds for each node ssh connection attempt

## 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)
