scrapli_send_commands
This plugin uses nornir-scrapli send_command 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_charwith\nnew line
Next, commands send one by one to device using send_command task plugin,
each task named after the command being sent. Sleep for given interval between
sending commands.
Dependencies:
nornir-scrapli module required
Sample Usage
Code to invoke scrapli_send_commands task:
from nornir import InitNornir
from nornir_salt.plugins.tasks import scrapli_send_commands
nr = InitNornir(config_file="config.yaml")
output = nr.run(
task=scrapli_send_commands,
commands=["show run", "show clock"]
)
Task scrapli_send_commands returns Nornir results object with individual tasks names set equal to commands sent to device.
API Reference
- nornir_salt.plugins.tasks.scrapli_send_commands.scrapli_send_commands(task: nornir.core.task.Task, commands: list = None, interval: int = 0.01, split_lines: bool = True, new_line_char: str = '_br_', repeat: int = 1, stop_pattern: str = None, repeat_interval: int = 1, return_last: int = None, **kwargs)
Nornir Task function to send show commands to devices using
nornir_scrapli.tasks.send_commandpluginPer-host
commandscan be provided using host’s objectdataattribute with__task__key with value set to dictionary withcommandskey 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"]
- Parameters
commands – (list or str) list or multiline string of commands to send to device
interval – (int) interval between sending commands, default 0.01s
new_line_char – (str) characters to replace in commands with new line
\nbefore sending command to device, default is_br_, useful to simulate enter keykwargs – (dict) arguments for nornir-scrapli
send_commandpluginsplit_lines – (bool) if True split multiline string to commands, send multiline string to device as is otherwise
repeat – (int) - number of times to repeat the commands
stop_pattern – (str) - stop commands repeat if at least one of commands output matches provided glob pattern
repeat_interval – (int) time in seconds to wait between repeating all commands
return_last – (int) if repeat greater then 1, returns requested last number of commands outputs
- Return result
Nornir result object with task results named after commands