> 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/reference/script-variables.md).

# Variables de script

Marcadores que SONAR sustituye en argumentos de script, variables de entorno, comandos de tarea, acciones de alerta y webhooks: dispositivo, cliente, sitio, campos personalizados, claves y alerta.

## Qué es y cuándo usarlo

Una variable de script es un marcador entre llaves dobles, como `{{agent.hostname}}`, que SONAR sustituye por un valor de la base de datos justo antes de que el script se ejecute en un dispositivo. Así, el mismo script puede recibir, para cada dispositivo, su propio nombre de host, el nombre de su cliente, el valor de un campo personalizado o un secreto guardado en el almacén de claves, sin editar el script.

Las variables se resuelven en el servidor de SONAR, para el dispositivo que ejecuta el script. El cuerpo del script se envía tal cual, salvo los [snippets](/es/sonar/administration/automation/scripts.md), que usan las mismas llaves pero insertan código.

## Dónde funcionan las variables

| Lugar                                                                 | Campos                                                                                                                                                         |
| --------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Run Script** en un dispositivo                                      | **Script Arguments**, **Environment vars**                                                                                                                     |
| **Tools › Bulk Script**                                               | **Script Arguments**, **Environment vars**, resueltos por separado para cada dispositivo                                                                       |
| Valores predeterminados de la biblioteca de scripts y **Test Script** | **Script Arguments**, **Environment vars**                                                                                                                     |
| Tareas automatizadas                                                  | Acciones de script: **Script Arguments**, **Environment vars**. Acciones de comando: la línea **Command**                                                      |
| Checks de script                                                      | **Policy Arguments**, **Environment vars**                                                                                                                     |
| Plantillas de alerta                                                  | **Failure script arguments**, **Resolved script arguments**, **Failure script environment vars**. Las variables de alerta también están disponibles aquí       |
| Acciones de URL y webhooks                                            | URL, cuerpo y encabezados. Vea [Acciones de URL](/es/sonar/administration/settings/url-actions.md) y [Webhooks](/es/sonar/administration/settings/webhooks.md) |

## Sintaxis

* Escriba el objeto, un punto y la propiedad: `{{agent.hostname}}`, `{{client.name}}`, `{{global.BackupToken}}`. Los espacios justo dentro de las llaves se ignoran.
* Use **una variable por argumento** y una por valor de variable de entorno (las acciones de alerta y los webhooks aceptan varias). El texto que rodea la variable se conserva: `Computer={{agent.hostname}}` se convierte en `Computer='WS-0001'` en PowerShell (vea las comillas más abajo).
* Las variables de entorno usan `KEY=VALUE`, con la variable en el valor: `SITE_NAME={{site.name}}`.
* En los argumentos de script, los comandos de tarea y las acciones de alerta, los valores de texto van entre comillas simples, de modo que un valor con espacios llega al script como un solo argumento. Los scripts Batch y los comandos **CMD** reciben el valor sin comillas. En PowerShell, las comillas simples dentro del valor se duplican. Los valores de las variables de entorno no llevan comillas, salvo en las acciones de alerta, y los campos de webhook nunca las llevan.
* Los valores que son listas, como un campo personalizado de selección múltiple, se unen con comas: `'A,B,C'`.
* Los valores de sí/no, como un campo personalizado de casilla de verificación, pasan a ser `$True` o `$False` en PowerShell y `1` o `0` en los demás shells.
* Si una variable no se puede resolver (está mal escrita, o el campo personalizado o la clave no existe), el argumento se pasa sin cambios, llaves incluidas.

## Variables de dispositivo

Estas variables leen el dispositivo que ejecuta el script. Los valores proceden del inventario más reciente del dispositivo.

| Variable                        | Valor                                                                                 |
| ------------------------------- | ------------------------------------------------------------------------------------- |
| `{{agent.hostname}}`            | Nombre del dispositivo, por ejemplo `WS-0001`                                         |
| `{{agent.description}}`         | La **Description** del dispositivo                                                    |
| `{{agent.operating_system}}`    | Nombre y versión del sistema operativo                                                |
| `{{agent.plat}}`                | Plataforma: `windows`, `linux` o `darwin`                                             |
| `{{agent.goarch}}`              | Arquitectura: `amd64`, `386`, `arm64` o `arm`                                         |
| `{{agent.version}}`             | Versión del agente                                                                    |
| `{{agent.monitoring_type}}`     | `server` o `workstation`                                                              |
| `{{agent.timezone}}`            | La zona horaria del dispositivo, o la zona horaria predeterminada si no tiene ninguna |
| `{{agent.public_ip}}`           | Última dirección IP pública informada                                                 |
| `{{agent.local_ips}}`           | Direcciones IPv4 locales, separadas por comas                                         |
| `{{agent.logged_in_username}}`  | Usuario con sesión iniciada cuando el dispositivo informó por última vez              |
| `{{agent.last_logged_in_user}}` | Último usuario que inició sesión                                                      |
| `{{agent.total_ram}}`           | Memoria total, en GB                                                                  |
| `{{agent.boot_time}}`           | Hora del último arranque, como marca de tiempo Unix                                   |
| `{{agent.needs_reboot}}`        | Si hay un reinicio pendiente (valor de sí/no)                                         |
| `{{agent.make_model}}`          | Marca y modelo                                                                        |
| `{{agent.serial_number}}`       | Número de serie                                                                       |
| `{{agent.cpu_model}}`           | Descripción del procesador (lista)                                                    |
| `{{agent.graphics}}`            | Adaptadores gráficos                                                                  |
| `{{agent.physical_disks}}`      | Discos físicos (lista)                                                                |

## Variables de cliente y de sitio

| Variable          | Valor                              |
| ----------------- | ---------------------------------- |
| `{{client.name}}` | Nombre del cliente del dispositivo |
| `{{site.name}}`   | Nombre del sitio del dispositivo   |

## Variables de campo personalizado

Los campos personalizados creados en **Admin Center › Settings › Custom Fields** se leen por su nombre, detrás del objeto al que pertenecen:

| Variable                  | Valor                                                                       |
| ------------------------- | --------------------------------------------------------------------------- |
| `{{agent.<Field Name>}}`  | El valor del dispositivo para un campo personalizado de dispositivo         |
| `{{site.<Field Name>}}`   | El valor de un campo personalizado de sitio en el sitio del dispositivo     |
| `{{client.<Field Name>}}` | El valor de un campo personalizado de cliente en el cliente del dispositivo |

El nombre se escribe exactamente como se definió, espacios incluidos: `{{client.Backup Server}}`. Si el registro no tiene valor, se usa el valor predeterminado del campo. Un campo personalizado con el mismo nombre que una de las propiedades de dispositivo anteriores prevalece sobre la propiedad. Vea [Campos personalizados](/es/sonar/administration/settings/custom-fields.md).

## Variables del almacén de claves

| Variable                | Valor                                                                       |
| ----------------------- | --------------------------------------------------------------------------- |
| `{{global.<Key Name>}}` | El valor guardado con ese nombre en **Admin Center › Settings › Key Store** |

Use el almacén de claves para los valores que no deben escribirse en los scripts, como contraseñas de servicio o tokens de API, y páselos como argumentos o variables de entorno. Vea [Almacén de claves](/es/sonar/administration/settings/key-store.md).

## Variables de alerta

En las acciones de una [plantilla de alerta](/es/sonar/administration/automation/alerts.md) y en los webhooks enviados para una alerta, también está disponible el objeto `alert`. Las variables de dispositivo, cliente, sitio, campo personalizado y almacén de claves se resuelven a través del dispositivo que generó la alerta.

| Variable                                 | Valor                                                                      |
| ---------------------------------------- | -------------------------------------------------------------------------- |
| `{{alert.message}}`                      | Texto de la alerta, por ejemplo `WS-0001 in CLIENT-A, SITE-01 is overdue.` |
| `{{alert.severity}}`                     | `info`, `warning` o `error`                                                |
| `{{alert.alert_type}}`                   | `availability`, `check` o `task`                                           |
| `{{alert.alert_time}}`                   | Cuándo se generó la alerta                                                 |
| `{{alert.resolved_on}}`                  | Cuándo se resolvió la alerta (acciones de resolución)                      |
| `{{alert.get_result.retcode}}`           | Alertas de check y de tarea: código de retorno de la última ejecución      |
| `{{alert.get_result.stdout}}`            | Alertas de check y de tarea: salida estándar de la última ejecución        |
| `{{alert.get_result.stderr}}`            | Alertas de check y de tarea: error estándar de la última ejecución         |
| `{{alert.get_result.more_info}}`         | Alertas de check: el último detalle del check                              |
| `{{alert.assigned_check.readable_desc}}` | Alertas de check: la descripción del check                                 |
| `{{alert.assigned_task.name}}`           | Alertas de tarea: el nombre de la tarea                                    |

En los argumentos y las variables de entorno de las acciones de alerta, cada valor va entre comillas simples.

## Ejemplos

| Campo                         | Entrada                                | El script recibe, en `WS-0001` de `CLIENT-A`   |
| ----------------------------- | -------------------------------------- | ---------------------------------------------- |
| Script Arguments (PowerShell) | `-Computer {{agent.hostname}}`         | `-Computer 'WS-0001'`                          |
| Script Arguments (PowerShell) | `{{client.name}}`                      | `'CLIENT-A'`                                   |
| Script Arguments (Batch)      | `{{agent.hostname}}`                   | `WS-0001`                                      |
| Environment vars              | `CLIENT={{client.name}}`               | `CLIENT` con el valor `CLIENT-A`               |
| Environment vars              | `API_TOKEN={{global.MonitoringToken}}` | `API_TOKEN` con el valor del almacén de claves |
| Comando de tarea (Powershell) | `Write-Output {{site.name}}`           | `Write-Output 'SITE-01'`                       |

## Errores comunes

| Síntoma                                                        | Causa                                                                                                                  | Solución                                                                         |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- |
| El script recibe `{{...}}` literalmente                        | El objeto o la propiedad está mal escrito, o el campo personalizado o la clave no existe                               | Compruebe el nombre con las tablas anteriores, **Custom Fields** y **Key Store** |
| No se sustituyen dos variables en un mismo argumento de script | Cada argumento de script resuelve una sola variable                                                                    | Divídalas en dos argumentos                                                      |
| El script recibe el valor con comillas                         | Los valores de texto van entre comillas en los argumentos                                                              | Use el valor como parámetro de tipo cadena, o páselo como variable de entorno    |
| No se sustituye una variable en el cuerpo del script           | Las variables funcionan en argumentos y variables de entorno; en el cuerpo, las llaves se leen como nombres de snippet | Pase el valor como argumento o como variable de entorno                          |

## Páginas relacionadas

* [Biblioteca de scripts](/es/sonar/administration/automation/scripts.md)
* [Ejecutar un comando o un script en un dispositivo](/es/sonar/administration/automation/run-commands-and-scripts.md)
* [Campos personalizados](/es/sonar/administration/settings/custom-fields.md)
* [Almacén de claves](/es/sonar/administration/settings/key-store.md)
* [Alertas y plantillas de alerta](/es/sonar/administration/automation/alerts.md)
