> For the complete documentation index, see [llms.txt](https://wiki.datadike.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.datadike.com/es/sonar/administration/automation/run-commands-and-scripts.md).

# Ejecutar un comando o un script en un dispositivo

Envíe un comando de shell o ejecute un script de la biblioteca en un dispositivo, elija qué pasa con la salida y encuentre cada ejecución en la pestaña History del dispositivo.

## Qué es y cuándo usarlo

**Send Command** ejecuta una sola línea de comandos en un dispositivo y muestra la salida en el mismo cuadro de diálogo. **Run Script** ejecuta un script de la [biblioteca de scripts](/es/sonar/administration/automation/scripts.md) en un dispositivo, con sus argumentos, variables de entorno y tiempo límite, y le deja decidir qué pasa con la salida: esperarla, dejar que se ejecute en segundo plano, enviarla por correo, guardarla en un campo personalizado o guardarla como nota del dispositivo.

Úselos para diagnósticos y correcciones puntuales en un solo dispositivo. Para llegar a muchos dispositivos a la vez, use las [acciones masivas](/es/sonar/administration/automation/bulk-actions.md); para repetir el mismo trabajo de forma programada, use las [tareas automatizadas](/es/sonar/administration/automation/automated-tasks.md).

## Antes de empezar

* Un rol con **Send Command** para los comandos y **Run Scripts** para los scripts, ambos en el grupo **System** de **Admin Center › Roles**. Para leer las ejecuciones anteriores, **List Agent History** (grupo **Agents**).
* Acceso al dispositivo: el rol debe cubrir su cliente o su sitio.
* El dispositivo debe estar en línea. Los comandos y los scripts se entregan al agente en el momento en que hace clic en **Send** o **Run**; no queda nada en cola para un dispositivo que está fuera de línea.
* Para **Run Script**, el script debe existir en **Management › Scripts** y ser compatible con la plataforma del dispositivo.
* Para **Email results**, el correo saliente configurado en **Admin Center › Settings** (vea [Notificaciones por correo y SMS](/es/sonar/administration/settings/email-and-sms.md)).

## Pasos

### Enviar un comando

1. Abra **Dashboard › Sysadmin**, abra el cliente y busque el dispositivo. Abra su menú de acciones: haga clic con el botón derecho en el dispositivo en la lista, o selecciónelo y use ⋮ (**Other actions**) en el panel del dispositivo.
2. Elija **Send Command**.
3. En **Shell**, elija el intérprete. Los dispositivos Windows ofrecen **CMD** y **Powershell**; los dispositivos Linux y macOS ofrecen **Bash** y **Custom**.
4. Con **Custom**, escriba la ruta del intérprete en **Custom shell**, por ejemplo `/usr/bin/python3`.
5. En Windows, marque **Run As User** para ejecutar el comando en el contexto del usuario que ha iniciado sesión.
6. Ajuste **Timeout (seconds)** si el comando necesita más de los 30 segundos predeterminados.
7. Escriba el comando en el cuadro de terminal, a la izquierda.
8. Haga clic en **Send**. El cuadro de diálogo espera a que termine el comando y muestra el resultado en **Output**, a la derecha.

### Ejecutar un script

1. Abra el menú de acciones del dispositivo y elija **Run Script**.
2. En **Select script**, elija el script. Solo aparecen los scripts compatibles con la plataforma del dispositivo. Pase el puntero sobre el icono ⓘ para ver las notas de sintaxis del script.
3. Revise **Script Arguments** y **Environment vars**. Vienen rellenados con los valores predeterminados del script; cámbielos para esta ejecución si hace falta. Ambos aceptan [variables de script](/es/sonar/reference/script-variables.md).
4. Elija qué hacer con la salida (vea la tabla de abajo).
5. En Windows, marque **Run As User** si el script debe ejecutarse como el usuario que ha iniciado sesión.
6. Compruebe **Timeout (seconds)**, rellenado con el valor predeterminado del script.
7. Haga clic en **Run**.

| Opción de salida                 | Qué ocurre                                                                                                                                                                                                                                 |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Wait for Output**              | El cuadro de diálogo espera y muestra la salida debajo del botón **Run**                                                                                                                                                                   |
| **Fire and Forget**              | El cuadro de diálogo se cierra enseguida con `<script> will now be run on <device>`. Lea el resultado más tarde en **History**                                                                                                             |
| **Email results**                | El script se ejecuta en segundo plano y el resultado se envía por correo: con **Use email addresses from global settings**, a las direcciones de la configuración global; con **Custom emails**, a las direcciones de **Email recipients** |
| **Save results to Custom Field** | El cuadro de diálogo espera y luego escribe la última línea de la salida en el campo personalizado elegido en **Select custom field**, o toda la salida cuando **Save all output** está marcado                                            |
| **Save results to Agent Notes**  | El cuadro de diálogo espera y luego guarda la salida como una nota en el dispositivo, visible en su pestaña **NOTES**                                                                                                                      |

El asunto del correo es `<client>, <site>, <device> <script> Results`, y el cuerpo incluye el código de retorno, el tiempo de ejecución, la salida estándar y el error estándar.

El campo personalizado usado como destino puede pertenecer al dispositivo, a su sitio o a su cliente; el valor se escribe en el registro correspondiente.

### Ejecutar un script favorito

1. Abra el menú de acciones del dispositivo y pase el puntero sobre **Run Favorited Script**.
2. Elija un script en el submenú. Este lista los scripts marcados como favoritos en la biblioteca.
3. **Run Script** se abre con ese script seleccionado. Continúe desde el paso 3 de arriba.

## Qué debe ver

* **Send Command**: la salida del comando en **Output**, con un botón para copiarla.
* **Run Script** con **Wait for Output**, **Save results to Custom Field** o **Save results to Agent Notes**: la salida del script debajo del botón **Run**.
* **Fire and Forget** y **Email results**: un mensaje de confirmación; la salida no se muestra en el cuadro de diálogo.

## Cómo verificar que funcionó

1. Abra la pestaña **HISTORY** del dispositivo y haga clic en el botón de actualizar. Cada comando y cada script ejecutado desde la consola añade una línea con **Time**, **Action** (**Cmd Run** o **Script Run**), **Script/Command**, **Initiated By** y **Output**. Las tareas automatizadas añaden líneas **Task Run** a la misma pestaña.
2. Haga clic en **Output** en la línea. Un comando abre su salida de texto; un script abre **Script Output**, con **Last Run**, **Run Time**, **Return Code**, **Standard Output** y **Standard Error**.
3. Para **Save results to Custom Field**, abra el dispositivo, el sitio o el cliente y compruebe el valor del campo personalizado. Para **Save results to Agent Notes**, compruebe la pestaña **NOTES**.
4. Abra **Reports & Audits › Audits**. Un comando se registra como **Execute Command** (`<user> issued <shell> command on <device>.`); un script, como **Execute Script** (`<user> ran script: "<script>" on <device>`).

## Errores comunes

| Síntoma                                                                                                                      | Causa                                                                                                              | Solución                                                                                                                                    |
| ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Send Command**, **Run Script** o **Run Favorited Script** aparece atenuado con `You don't have permission for this action` | El rol no tiene **Send Command** o **Run Scripts**                                                                 | Añada el permiso al rol                                                                                                                     |
| `Unable to contact the agent`                                                                                                | El dispositivo está fuera de línea o no respondió a tiempo                                                         | Compruebe el estado del dispositivo. Para trabajos largos, aumente el tiempo límite o ejecute un script con **Fire and Forget**             |
| `You don't have any scripts favorited!`                                                                                      | Ningún script está marcado como favorito                                                                           | Marque scripts con **Add as Favorite** en **Management › Scripts**                                                                          |
| El script no está en **Select script**                                                                                       | No es compatible con la plataforma del dispositivo, o está oculto                                                  | Edite **Supported Platforms**, o use **Show Script** en la biblioteca                                                                       |
| `Custom shell path is required when using Custom shell.`                                                                     | Se eligió **Custom** con la ruta vacía                                                                             | Escriba la ruta del intérprete                                                                                                              |
| `Minimum is 10 seconds` / `Maximum is 3600 seconds` (**Send Command**), `Minimum is 5 seconds` (**Run Script**)              | El tiempo límite está fuera de rango                                                                               | Introduzca un valor dentro del rango                                                                                                        |
| `No output is available yet` en **History**                                                                                  | La ejecución no ha informado todavía: sigue en curso, o el dispositivo quedó fuera de línea antes de que terminara | Actualice la pestaña más tarde. Si el dispositivo estaba fuera de línea cuando se envió la acción, vuelva a ejecutarla cuando esté en línea |
| El script recibe `{{...}}` literalmente                                                                                      | Una variable de los argumentos no se resuelve                                                                      | Compruebe la ortografía con [Variables de script](/es/sonar/reference/script-variables.md)                                                  |

## Referencia de campos

### Send Command

| Campo             | Qué hace                                                                                                        | Valores aceptados                                                     | Predeterminado                            |
| ----------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | ----------------------------------------- |
| Shell             | Intérprete que ejecuta el comando                                                                               | Windows: **CMD**, **Powershell**. Linux y macOS: **Bash**, **Custom** | **CMD** en Windows, **Bash** en los demás |
| Custom shell      | Ruta del intérprete cuando se elige **Custom**                                                                  | Una ruta absoluta                                                     | Vacío. Obligatorio con **Custom**         |
| Run As User       | Solo Windows. Ejecuta en el contexto del usuario que ha iniciado sesión; si no hay ninguno, ejecuta como SYSTEM | Activado o desactivado                                                | Desactivado                               |
| Timeout (seconds) | Cuánto tiempo deja el agente que se ejecute el comando, y cuánto lo espera el cuadro de diálogo                 | Número entero, 10 o más                                               | 30                                        |
| Command           | La línea de comandos                                                                                            | Texto                                                                 | Vacío. Obligatorio                        |

### Run Script

| Campo               | Qué hace                                                                                                                                    | Valores aceptados                                                                                                              | Predeterminado                         |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------- |
| Select script       | El script de la biblioteca que se ejecuta                                                                                                   | Scripts compatibles con la plataforma del dispositivo                                                                          | Ninguno. Obligatorio                   |
| Script Arguments    | Argumentos para esta ejecución. Pulse Intro después de cada uno                                                                             | Texto, con variables de script                                                                                                 | Los valores predeterminados del script |
| Environment vars    | Variables de entorno para esta ejecución, como `KEY=VALUE`                                                                                  | Texto, con variables de script                                                                                                 | Los valores predeterminados del script |
| Output              | Qué ocurre con la salida                                                                                                                    | **Wait for Output**, **Fire and Forget**, **Email results**, **Save results to Custom Field**, **Save results to Agent Notes** | **Wait for Output**                    |
| Email mode          | Destinatarios de **Email results**                                                                                                          | **Use email addresses from global settings**, **Custom emails**                                                                | Configuración global                   |
| Email recipients    | Direcciones para **Custom emails**. Pulse Intro después de cada una                                                                         | Direcciones de correo                                                                                                          | Vacío                                  |
| Select custom field | Destino de **Save results to Custom Field**                                                                                                 | Un campo personalizado de dispositivo, de sitio o de cliente                                                                   | Ninguno. Obligatorio con esta opción   |
| Save all output     | Guarda toda la salida en lugar de la última línea                                                                                           | Activado o desactivado                                                                                                         | Desactivado                            |
| Run As User         | Solo Windows. Ejecuta como el usuario que ha iniciado sesión. Un script marcado con **Run As User** en la biblioteca siempre se ejecuta así | Activado o desactivado                                                                                                         | Desactivado                            |
| Timeout (seconds)   | Tiempo máximo de ejecución                                                                                                                  | 5 o más                                                                                                                        | El valor predeterminado del script     |

## Páginas relacionadas

* [Biblioteca de scripts](/es/sonar/administration/automation/scripts.md)
* [Ejecutar acciones en muchos dispositivos](/es/sonar/administration/automation/bulk-actions.md)
* [Variables de script](/es/sonar/reference/script-variables.md)
* [Detalles del dispositivo](/es/sonar/administration/devices/device-details.md)
* [Registro de auditoría](/es/sonar/administration/audit/audit-trail.md)
