(netlab-exec)=
# Executing Commands on Lab Devices

**netlab exec** command uses information stored in the _netlab_ snapshot file and reported with the **[`netlab inspect --node`](inspect.md)** command to execute a command on one or more lab devices using SSH or **docker exec**.

[**netlab inspect** documentation](netlab-inspect-node) describes how to specify the nodes on which the command will be executed.

## Usage

```text
$ netlab exec -h
usage: netlab exec [-h] [-v] [-q] [--dry-run] [-i INSTANCE] node

Run a command on one or more network devices

positional arguments:
  node                  Node(s) to run command on

options:
  -h, --help            show this help message and exit
  -v, --verbose         Verbose logging (add multiple flags for increased verbosity)
  -q, --quiet           Report only major errors
  --dry-run             Print the hosts and the commands that would be executed on them,
                        but do not execute them
  --header              Add node headers before command printouts
  -i INSTANCE, --instance INSTANCE
                        Specify lab instance to execute commands in

The rest of the arguments are passed to SSH or docker exec command
```

```{warning}
Do not use **netlab exec** in a production environment.
```