loop
Execute a sequence of commands repeatedly, either by iterating over a list of values, a numerical range, or until a condition is met.
This is useful when the number of iterations is not known in advance, for example, when processing results from a network scan.
Note
The loop command works with two primary loop conditions: iterating over a list of values (items()) or iterating over a numerical range (range()).
vars:
LISTA:
- one
- two
commands:
# Iterate over a list:
- type: loop
cmd: "items(LISTA)"
commands:
- type: shell
cmd: echo hello
- type: debug
cmd: $LOOP_ITEM
# Iterate over a range:
- type: loop
cmd: "range(0, 3)"
commands:
- type: shell
cmd: echo "Index $LOOP_INDEX"
- type: debug
cmd: $LOOP_INDEX
Loop Modes
items(LIST):
Iterates over the elements of a list and substitutes each element into the commands.
The current item is accessible as the $LOOP_ITEM variable.
range(start, end)
Iterates over a range of integers start (inclusive) to end (exclusive). The current index is accessible as the $LOOP_INDEX variable.
until(condition)
Iterates indefinitely until the condition is evaluates to True, checked before every command in the loop body.
Variables in cmd section of an until loop command until($VAR1 == $VAR2) will be substituted from the variable store on every iteration of the loop.
The current iteration count is available as $LOOP_INDEX.
Example: until($PORT == 7)
Configuration
- cmd
The loop condition. Defines how the loop iterates, either over a list or a range of values, or idefinitely until the condition defined in
until()is met.- Type:
str
- Required:
True
Examples:
items(LISTA): Iterate over the elements of a list named
LISTA.range(0, 10): Iterate over a range from 0 to 9.
until($PORT == 7): Iterate until the condition is met
- break_if
A condition checked before every command in the loop. If it evaluates to True, the loop exits immediately Supports the same operators as
only_if.- Type:
str
- Required:
False
- commands
The list of commands to execute during each iteration of the loop. These commands are executed once per iteration, with loop-specific variables (
$LOOP_ITEMor$LOOP_INDEX) available for substitution within these commands.- Type:
list[Command]
- Required:
True
Loop Variables
- LOOP_ITEM
In items loops, this variable holds the current item from the list being iterated over.
- Type:
str
- LOOP_INDEX
In range loops, this variable holds the current index of the iteration.
- Type:
int
Examples
Iterate over a list and run an Nmap scan for each element:
vars: PORTS: - port1 - port2 commands: - type: loop cmd: "items(PORTS)" commands: - type: shell cmd: "nmap -p $LOOP_ITEM 10.10.10.10" - type: debug cmd: $LOOP_ITEM
Iterate over a range using variables for start and end:
vars: INDEX_START: 0 INDEX_END: 5 commands: - type: loop cmd: "range($INDEX_START, $INDEX_END)" commands: - type: shell cmd: echo "Index is $LOOP_INDEX"