> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloud.red/llms.txt
> Use this file to discover all available pages before exploring further.

# Script Runner

> The ScriptRunner feature allows users to run scripts in various languages (Bash, Python, Node.js, TCL) against one or more F5 devices.

ScriptRunner enables users to have a larger level of control while performing actions against their entire fleet.

<Warning>
  Warning: This feature has the potential to negatively impact devices. When running scripts through script runner, make sure that all potential impacts are properly evaluated.
</Warning>

### Key Concepts

* **Script:** A standalone code block not tied to any specific device.
* **Task:** A script that is associated with one or more F5 devices for execution. Tasks can also have predefined arguments if the script requires them.
* **Repositories:**\
  **Customer Repository:** Contains scripts that the customer creates and manages.\
  **Cloud.Red Repository:** A curated collection of scripts provided by the Cloud.Red engineering team, available for customers to use in their environments.

### Arguments

Scripts in ScriptRunner can accept arguments, allowing for dynamic and flexible execution. The nomenclature for passing arguments in various scripting languages is as follows:

**Bash**

```
#!/bin/bash
echo "Argument 1: $1"
echo "Argument 2: $2"
```

**Python**

```
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
print(f"Argument 1: {arg1}")
print(f"Argument 2: {arg2}")
```

**Node.js**

```
const args = process.argv.slice(2);
console.log(Argument 1: ${args[0]});
console.log(Argument 2: ${args[1]});
```

**TCL**

```
set arg1 [lindex $argv 0]
set arg2 [lindex $argv 1]
puts "Argument 1: $arg1"
puts "Argument 2: $arg2"
```

<Tip>
  These examples illustrate how to handle arguments in the different supported scripting languages, making your scripts adaptable to various requirements and contexts within the Cloud.Red environment.
</Tip>

### Using Script Runner

In Script Runner users have the ability to run a script, save it to their repository, or save a script as a task to be run at a later time.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/script-runner-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=97a266a7803f89648e1ddaa4a061ed35" width="1916" height="842" data-path="features/script-runner-images/script-runner-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/script-runner-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=b4537c3360c54ef55ef5caca9367c93b" width="1918" height="844" data-path="features/script-runner-images/script-runner-dark.png" />

* Select your interpreter and insert the script intended to be run.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/insert-script-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=3f2deba5d6fbf279d05dfeb4092f6d85" width="899" height="459" data-path="features/script-runner-images/insert-script-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/insert-script-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=366bc78e60add63bfbfa8fa8ea138fb6" width="915" height="464" data-path="features/script-runner-images/insert-script-dark.png" />

* Add any necessary arguments that are required for the script below.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/insert-arguments-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=f878eeeca94f1acc0f68cee2028caca3" width="900" height="462" data-path="features/script-runner-images/insert-arguments-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/insert-arguments-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=ea9424cb4a7f05c2acf437b0af2ffb64" width="911" height="461" data-path="features/script-runner-images/insert-arguments-dark.png" />

* Save scripts to the account repository so that they are available at a later date.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/save-script-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=ca2295a57b99330224f45365a405b0bb" width="900" height="459" data-path="features/script-runner-images/save-script-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/save-script-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=f932929e1bf7211d3896a44a0a97973a" width="917" height="463" data-path="features/script-runner-images/save-script-dark.png" />

* When planning to run the script immediately, select the devices that the script is intended to be run on.

<Frame caption="Select RUN to complete the action.">
  <img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/select-devices-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=e3023c4b820f2ef0c05670b8bd7670ca" width="901" height="461" data-path="features/script-runner-images/select-devices-light.png" />

  <img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/select-devices-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=9da26cdb8f79aae6bb008e9843d5b544" width="914" height="462" data-path="features/script-runner-images/select-devices-dark.png" />
</Frame>

* Users can use the task feature to attach devices to a script that is saved to the repository in preperation of running the script at a later time.

<Frame caption="The ability for users to schedule the script to run at a designated time is coming soon">
  <img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/save-task-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=f6addfb3d9418b5c9f00662a7fad0257" width="901" height="495" data-path="features/script-runner-images/save-task-light.png" />

  <img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/save-task-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=163b433ae7c5d63b40d214c702656c50" width="912" height="461" data-path="features/script-runner-images/save-task-dark.png" />
</Frame>

* When saving a script to the repository, provide a name and description for the script.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/saving-script-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=35ad785f5be08911c523c423d5890d3a" width="900" height="492" data-path="features/script-runner-images/saving-script-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/saving-script-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=45d2ae917c5650f7d177ab416da618d6" width="901" height="460" data-path="features/script-runner-images/saving-script-dark.png" />

* When saving a task to the repository, provide the name, description, the script and the devices that the script is intended to be run on.

<img className="block h-80 dark:hidden" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/saving-task-light.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=31f3cdc92965e0384dd80c7f239937f5" width="897" height="492" data-path="features/script-runner-images/saving-task-light.png" />

<img className="hidden h-80 dark:block" src="https://mintcdn.com/cloudred/lZ-9xTWiXWjj_SDm/features/script-runner-images/saving-task-dark.png?fit=max&auto=format&n=lZ-9xTWiXWjj_SDm&q=85&s=2bb7f26ba3735623398202973be55824" width="901" height="457" data-path="features/script-runner-images/saving-task-dark.png" />
