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 from task.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:

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 plugin

Per-host commands can be provided using host’s object data attribute with __task__ key with value set to dictionary with commands 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 key

  • kwargs – (dict) arguments for nornir-scrapli send_command plugin

  • split_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