napalm_send_commands
This task plugin uses nornir-napalm
napalm_cli
task
to send multiple commands to devices pre-processing commands accordingly.
Pre-processing includes:
Check and if any - retrieve per-host commands from host’s inventory data
task.host.data["__task__"]["commands"]
or fromtask.host.data["__task__"]["filename"]
If command is a multi-line string, split it to individual lines or form a list with single command
Iterate over commands list and remove empty strings
Iterate over commands and replace
new_line_char
with\n
new line
Next, if interval
argument provided commands send one by one to device using
napalm_cli
task plugin sleeping for given interval
between commands. If
interval
argument is not provided, all commands sent at once.
Dependencies:
nornir-napalm module required
napalm_send_commands sample usage
Code to invoke napalm_send_commands
task:
from nornir_salt.plugins.tasks import napalm_send_commands
output = nr.run(
task=napalm_send_commands,
commands=["show run", "show clock"]
)
Task napalm_send_commands
returns Nornir results object with individual tasks
names set equal to commands sent to device.
API Reference
- nornir_salt.plugins.tasks.napalm_send_commands.napalm_send_commands(task: nornir.core.task.Task, commands=None, interval=None, new_line_char: str = '_br_', split_lines: bool = True)
Nornir Task function to send show commands to devices using
napalm_cli
task plugin.Per-host
commands
can be provided using host’s objectdata
attribute with__task__
key with value set to dictionary withcommands
key containing a list of or a multiline string of commands to send to device, e.g.:print(host.data["__task__"]["commands"]) ["ping 1.1.1.1 source 1.1.1.2", "show clock"]
Alternatively,
__task__
can containfilename
key with commands string to send to device.- Parameters
commands – (list or str) list or multiline string of commands to send to device
interval – (int) interval between sending commands, default None
new_line_char – (str) characters to replace in commands with new line
\n
before sending command to device, default is_br_
, useful to simulate enter keysplit_lines – (bool) if True split multiline string to commands, send multiline string to device as is otherwise
- Return result
Nornir result object with task results named after commands