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_char
with\n
new 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_command
pluginPer-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"]
- 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
\n
before sending command to device, default is_br_
, useful to simulate enter keykwargs – (dict) arguments for nornir-scrapli
send_command
pluginsplit_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