send_interactive
nornir_scrapli.tasks.send_interactive
send_interactive(task: Task, interact_events: List[Tuple[str, str, Optional[bool]]], failed_when_contains: Optional[Union[str, List[str]]] = None, privilege_level: str = '', timeout_ops: Optional[float] = None) -> Result
¶
Send inputs in an interactive fashion using scrapli; usually used to handle prompts
Used to interact with devices where prompts change per input, and where inputs may be hidden such as in the case of a password input. This can be used to respond to challenges from devices such as the confirmation for the command "clear logging" on IOSXE devices for example. You may have as many elements in the "interact_events" list as needed, and each element of that list should be a tuple of two or three elements. The first element is always the input to send as a string, the second should be the expected response as a string, and the optional third a bool for whether or not the input is "hidden" (i.e. password input) An example where we need this sort of capability:
1 2 3 4 5 6 7 8 9 10 11 |
|
To accomplish this we can use the following (in "native" scrapli):
1 2 3 4 5 6 7 8 9 |
|
If we needed to deal with more prompts we could simply continue adding tuples to the list of interact "events".
Parameters:
Name | Type | Description | Default |
---|---|---|---|
task |
Task
|
nornir task object |
required |
interact_events |
List[Tuple[str, str, Optional[bool]]]
|
list of tuples containing the "interactions" with the device each list element must have an input and an expected response, and may have an optional bool for the third and final element -- the optional bool specifies if the input that is sent to the device is "hidden" (ex: password), if the hidden param is not provided it is assumed the input is "normal" (not hidden) |
required |
failed_when_contains |
Optional[Union[str, List[str]]]
|
list of strings that, if present in final output, represent a failed command/interaction |
None
|
privilege_level |
str
|
name of the privilege level to operate in |
''
|
timeout_ops |
Optional[float]
|
timeout ops value for this operation; only sets the timeout_ops value for the duration of the operation, value is reset to initial value after operation is completed |
None
|
Returns:
Name | Type | Description |
---|---|---|
Result |
Result
|
nornir result object with Result.result value set to returned scrapli Response object |
Source code in tasks/core/send_interactive.py
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
|