3 Scripts
Resumen
En la sección Alerts > Scripts se pueden configurar y mantener scripts globales definidos por el usuario.
Este menú solo está disponible para usuarios del tipo SuperAdmin.
Los scripts globales, según el ámbito configurado y también los permisos del usuario, están disponibles para su ejecución:
- Desde el menú del host en varias ubicaciones del frontend (Dashboard, Problems, Latest data, Maps, etc.).
- Desde el menú de eventos.
- Se pueden ejecutar como una operación de una acción.
Los scripts se ejecutan en Zabbix agent, Zabbix server (proxy) o solo en Zabbix server Consulte también Ejecución de comandos.
Tanto en Zabbix agent como en Zabbix proxy, los scripts remotos están deshabilitados de forma predeterminada. Se pueden habilitar de la siguiente manera:
- Para comandos remotos ejecutados en Zabbix agent:
- añadiendo un parámetro AllowKey=system.run[<command>,*] para cada comando permitido en la configuración del agent, * representa los modos wait y nowait;
- Para comandos remotos ejecutados en Zabbix proxy:
- Advertencia: No es necesario habilitar los comandos remotos en Zabbix proxy si los comandos remotos se ejecutan en Zabbix agent que está supervisado por Zabbix proxy. Sin embargo, si es necesario ejecutar comandos remotos en Zabbix proxy, establezca el parámetro EnableRemoteCommands en '1' en la configuración del proxy.
La ejecución de scripts globales en Zabbix server puede deshabilitarse estableciendo EnableGlobalScripts=0 en la configuración del server.
En las instalaciones nuevas, desde Zabbix 7.0, la ejecución de scripts globales en Zabbix server está deshabilitada de forma predeterminada.
Se muestra una lista de los scripts existentes con sus detalles.

Datos mostrados:
| Column | Description |
|---|---|
| Name | Nombre del script. Al hacer clic en el nombre del script se abre el formulario de configuración del script. |
| Scope | Ámbito del script: operación de acción, acción manual de host o acción manual de evento. Esta configuración determina dónde está disponible el script: en los comandos remotos de las operaciones de acción, desde el menú del host o desde el menú de eventos, respectivamente. |
| Used in actions | Se muestran todas las acciones en las que se usa el script, precedidas por el número total de estas acciones. Al hacer clic en el nombre de la acción se abre el formulario de configuración de la acción. Si el usuario no tiene permisos para la acción, el nombre no es clicable. |
| Type | Se muestra el tipo de script: comando URL, Webhook, Script, SSH, Telnet o IPMI. |
| Execute on | Se muestra si el script se ejecutará en Zabbix agent, Zabbix proxy o server, o solo en Zabbix server. |
| Commands | Se muestran todos los comandos que se ejecutarán dentro del script. Aquí no se muestra nada para los webhooks. |
| User group | Se muestra el grupo de usuarios al que está disponible el script (o All para todos los grupos de usuarios). |
| Host group | Se muestra el grupo de host para el que está disponible el script (o All para todos los grupos de host). |
| Host access | Se muestra el nivel de permisos para el grupo de host: Read o Write. Solo los usuarios con el nivel de permisos requerido tendrán acceso para ejecutar el script. |
Para configurar un script nuevo, haga clic en el botón Create script en la esquina superior derecha.
Opciones de edición masiva
Un botón debajo de la lista ofrece una opción de edición masiva:
- Eliminar - elimina los scripts
Para usar esta opción, marque las casillas de verificación delante de los scripts correspondientes y haga clic en Eliminar.
Uso del filtro
Puede usar el filtro para mostrar solo los scripts que le interesan. Para mejorar el rendimiento de la búsqueda, los datos se buscan con las macros sin resolver.
El enlace Filter está disponible encima de la lista de scripts. Si hace clic en él, se mostrará un filtro donde puede filtrar scripts por nombre y ámbito.

Configuración de un script global

Se recomienda utilizar funciones de macro en lugar de macros simples en los scripts globales para mejorar la seguridad, ya que las macros no se escapan automáticamente.
Atributos del script:
| Parámetro | Descripción | |
|---|---|---|
| Nombre | Nombre único del script. Por ejemplo, Clear /tmp filesystem |
|
| Ámbito | Ámbito del script: operación de acción, acción manual del host o acción manual del evento. Esta configuración determina dónde se puede utilizar el script: en comandos remotos de las operaciones de una acción, desde el menú del host o desde el menú del evento, respectivamente. Al establecer el ámbito en «Operación de acción», el script estará disponible para todos los usuarios con acceso a Alertas > Acciones. Si un script se utiliza realmente en una acción, su ámbito no se puede cambiar de «Operación de acción». Compatibilidad con macros El ámbito afecta al conjunto de macros disponibles. Por ejemplo, las macros relacionadas con el usuario ( {USER.*}) son compatibles con los scripts para permitir pasar información sobre el usuario que inició el script. Sin embargo, no son compatibles si el ámbito del script es «Operación de acción», ya que las operaciones de acción se ejecutan automáticamente.Una macro {MANUALINPUT} permite especificar una entrada manual en el momento de ejecutar el script. Es compatible con los scripts de acciones manuales del host y de acciones manuales del evento. Para saber qué otras macros son compatibles, busque «Notificaciones y comandos basados en trigger/Comandos basados en trigger», «Scripts de acciones manuales del host» y «Scripts de acciones manuales del evento» en la tabla de macros compatibles. Tenga en cuenta que, si una macro puede resolverse en un valor que contenga espacios (por ejemplo, el nombre del host), debe incluir comillas cuando sea necesario. |
|
| Ruta del menú | Ruta de menú deseada para el script. Por ejemplo, Default o Default/ mostrarán el script en el directorio correspondiente. Los menús pueden estar anidados, por ejemplo, Main menu/Sub menu1/Sub menu2. Al acceder a los scripts mediante el menú del host/evento en las secciones de monitorización, se organizarán según los directorios indicados.Este campo solo se muestra si se selecciona «Acción manual del host» o «Acción manual del evento» como Ámbito. |
|
| Tipo | Haga clic en el botón correspondiente para seleccionar el tipo de script: URL, Webhook, Script, SSH, Telnet o comando IPMI. El tipo URL solo está disponible cuando se selecciona «Acción manual del host» o «Acción manual del evento» como Ámbito. |
|
| Tipo de script: URL | ||
| URL | Especifique la URL para acceder rápidamente desde el menú del host o el menú del evento. Se admiten macros y macros de usuario personalizadas. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Utilice la macro {MANUALINPUT} en este campo para poder especificar una entrada manual en el momento de ejecutar el script, por ejemplo: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.viewLos valores de las macros no deben codificarse como URL. |
|
| Abrir en una ventana nueva | Determina si la URL debe abrirse en una pestaña nueva o en la misma pestaña del navegador. | |
| Tipo de script: Webhook | ||
| Parámetros | Especifique las variables del webhook como pares atributo-valor. Consulte también: configuración del medio Webhook. Se admiten macros y macros de usuario personalizadas en los valores de los parámetros. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). |
|
| Script | Introduzca el código JavaScript en el editor modal que se abre al hacer clic en el campo del parámetro o en el icono del lápiz situado junto a él. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Consulte también: configuración del medio Webhook, Objetos JavaScript adicionales. |
|
| Tiempo de espera | Tiempo de espera de ejecución de JavaScript (1-60 s, valor predeterminado: 30 s). Se admiten sufijos de tiempo (por ejemplo, 30s, 1m). |
|
| Tipo de script: Script | ||
| Ejecutar en | Haga clic en el botón correspondiente para ejecutar el script de shell en: Zabbix agent: el script será ejecutado por Zabbix agent (si el item system.run está permitido) en el host. Zabbix proxy o server: el script será ejecutado por Zabbix proxy o server, según si el host está monitorizado por un proxy o por un server. Se ejecutará en el proxy si está habilitado mediante EnableRemoteCommands. Se ejecutará en el server si los scripts globales están habilitados mediante el parámetro del server EnableGlobalScripts. Zabbix server: el script será ejecutado únicamente por Zabbix server. Esta opción no estará disponible si los scripts globales están deshabilitados mediante el parámetro del server EnableGlobalScripts. |
|
| Comandos | Introduzca la ruta completa de los comandos que se ejecutarán dentro del script. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Se admiten macros de usuario personalizadas. |
|
| Tipo de script: SSH | ||
| Método de autenticación | Seleccione el método de autenticación: contraseña o clave pública. | |
| Nombre de usuario | Introduzca el nombre de usuario. | |
| Contraseña | Introduzca la contraseña. Este campo está disponible si se selecciona «Contraseña» como método de autenticación. |
|
| Archivo de clave pública | Introduzca la ruta al archivo de clave pública. Este campo está disponible si se selecciona «Clave pública» como método de autenticación. |
|
| Archivo de clave privada | Introduzca la ruta al archivo de clave privada. Este campo está disponible si se selecciona «Clave pública» como método de autenticación. |
|
| Frase de contraseña | Introduzca la frase de contraseña. Este campo está disponible si se selecciona «Clave pública» como método de autenticación. |
|
| Puerto | Introduzca el puerto del servicio SSH remoto en el host de destino al que se conectará Zabbix. | |
| Comandos | Introduzca los comandos. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Se admiten macros de usuario personalizadas. |
|
| Tipo de script: Telnet | ||
| Nombre de usuario | Introduzca el nombre de usuario. | |
| Contraseña | Introduzca la contraseña. | |
| Puerto | Introduzca el puerto del servicio Telnet remoto en el host de destino al que se conectará Zabbix. | |
| Comandos | Introduzca los comandos. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Se admiten macros de usuario personalizadas. |
|
| Tipo de script: IPMI | ||
| Comando | Introduzca el comando IPMI. La compatibilidad con macros depende del ámbito del script (consulte Ámbito más arriba). Se admiten macros de usuario personalizadas. |
|
| Descripción | Introduzca una descripción para el script. | |
| Grupo de hosts | Seleccione el grupo de hosts para el que estará disponible el script (o Todos para todos los grupos de hosts). | |
| Grupo de usuarios | Seleccione el grupo de usuarios para el que estará disponible el script (o Todos para todos los grupos de usuarios). Este campo solo se muestra si se selecciona «Acción manual del host» o «Acción manual del evento» como Ámbito. |
|
| Permisos de host requeridos | Seleccione el nivel de permisos para el grupo de hosts: Lectura o Escritura. Solo los usuarios con el nivel de permisos requerido podrán ejecutar el script. Este campo solo se muestra si se selecciona «Acción manual del host» o «Acción manual del evento» como Ámbito. |
|
| Configuración avanzada | Haga clic en el encabezado Configuración avanzada para mostrar las opciones de configuración avanzada. Este campo solo se muestra si se selecciona «Acción manual del host» o «Acción manual del evento» como Ámbito. |
|
Configuración avanzada
Las opciones de configuración avanzada están disponibles en una sección plegable de Configuración avanzada:

| Parameter | Description |
|---|---|
| Enable user input | Marque la casilla para habilitar la entrada manual del usuario antes de ejecutar el script. La entrada manual del usuario reemplazará el valor de la macro {MANUALINPUT} en el script. Véase también: Entrada manual del usuario. |
| Input prompt | Introduzca texto personalizado para solicitar una entrada personalizada del usuario. Este texto se mostrará encima del campo de entrada en la ventana emergente Entrada manual. Para ver una vista previa de la ventana emergente Entrada manual, haga clic en Test user input. La vista previa también permite comprobar si la cadena de entrada cumple la regla de validación de entrada (consulte los parámetros a continuación). La compatibilidad con macros y macros de usuario depende del alcance del script (consulte Scope en los parámetros generales de configuración del script). |
| Input type | Seleccione el tipo de entrada manual: String - cadena única; Dropdown - el valor se selecciona entre varias opciones desplegables. |
| Dropdown options | Introduzca valores únicos para el desplegable de entrada del usuario en una lista separada por comas. Para incluir una opción vacía en el desplegable, añada una coma adicional al principio, en el medio o al final de la lista. Este campo solo se muestra si se selecciona 'Dropdown' como Input type. |
| Default input string | Introduzca la cadena predeterminada para la entrada del usuario (o ninguna). Este campo se validará con la expresión regular proporcionada en el campo Input validation rule. El valor introducido aquí se mostrará de forma predeterminada en la ventana emergente Entrada manual. Este campo solo se muestra si se selecciona 'String' como Input type. |
| Input validation rule | Introduzca una expresión regular para validar la cadena de entrada del usuario. Se admiten expresiones regulares globales. Este campo solo se muestra si se selecciona 'String' como Input type. |
| Enable confirmation | Marque la casilla para mostrar un mensaje de confirmación antes de ejecutar el script. Esta función puede ser especialmente útil en operaciones potencialmente peligrosas (como un script de reinicio) o en aquellas que puedan tardar mucho tiempo. |
| Confirmation text | Introduzca texto de confirmación personalizado para la ventana emergente de confirmación habilitada con la casilla anterior (por ejemplo, Remote system will be rebooted. Are you sure?). Para ver cómo se mostrará el texto, haga clic en Test confirmation junto al campo. Se admiten macros y user macros personalizados. Nota: las macros no se expandirán al probar el mensaje de confirmación. |
Si se configuran tanto la entrada manual del usuario como un mensaje de confirmación, se mostrarán en ventanas emergentes consecutivas.
Entrada manual del usuario
La entrada manual del usuario permite proporcionar un parámetro personalizado en cada ejecución del script. Esto evita la necesidad de crear múltiples scripts de usuario similares con solo una diferencia de parámetro.
Por ejemplo, es posible que desee proporcionar un número entero diferente o una dirección URL diferente al script durante la ejecución.
Para habilitar la entrada manual del usuario:
- utilice la macro {MANUALINPUT} en el script (comandos, script, parámetro del script) donde sea necesario; o en el campo URL de los scripts de URL;
- en la configuración avanzada del script, habilite la entrada manual del usuario y configure las opciones de entrada.
Con la entrada del usuario habilitada, antes de la ejecución del script, aparecerá una ventana emergente Entrada manual solicitando al usuario que proporcione un valor personalizado. El valor proporcionado reemplazará a {MANUALINPUT} en el script.
Dependiendo de la configuración, se le pedirá al usuario que ingrese un valor de cadena:

O seleccione el valor de una lista desplegable de opciones predefinidas:

La entrada manual del usuario solo está disponible para scripts cuyo alcance sea 'Acción manual de host' o 'Acción manual de evento'.
Ejecución del script y resultado
Los scripts ejecutados por Zabbix server se ejecutan en el orden descrito en la página de ejecución de comandos.
El resultado del script se muestra en una ventana emergente que aparece después de ejecutar el script. El valor devuelto por el script es una salida estándar:
- Si el script finaliza correctamente (código de salida
0), el valor devuelto se limita a 16 MB (incluido el espacio en blanco final, que se trunca). - Si el script termina con un error (código de salida distinto de cero), el valor devuelto es un error estándar limitado a 2 KB.
Zabbix no almacena de forma predeterminada la salida extendida del script. Para conservar todos los detalles de la salida, puede implementar el registro dentro del propio script (por ejemplo, redirigiendo la salida a un archivo de registro local).
Tenga en cuenta que, para los scripts ejecutados en Zabbix server o en Zabbix proxy, también se aplican los límites de base de datos.
A continuación se muestra un ejemplo de un script y la ventana de resultado:
uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"

El resultado del script no muestra el script en sí.
Tiempo de espera del script en Zabbix agent
Puede encontrarse con una situación en la que se produzca un tiempo de espera al ejecutar un script.
Vea un ejemplo de un script que se ejecuta en Zabbix agent y la ventana de resultado a continuación:
sleep 5
df -h

El mensaje de error, en este caso, es el siguiente:
Timeout while executing a shell script.
Para evitar estas situaciones, se recomienda optimizar el propio script (en el ejemplo anterior, "5") en lugar de ajustar el parámetro Timeout en la configuración de Zabbix agent y la configuración de Zabbix server.
En caso de que el parámetro Timeout se haya cambiado en la configuración de Zabbix agent, aparecerá el siguiente mensaje de error:
Get value from agent failed: ZBX_TCP_READ() timed out.
Esto significa que la modificación se ha realizado en la configuración de Zabbix agent, pero también es necesario modificar el parámetro Timeout en la configuración de Zabbix server.
Tiempo de espera de script en agents activos
Es posible ejecutar scripts en agents que operan solo en modo activo. Una vez que la ejecución del script se activa mediante la operation de una acción o la ejecución manual del script, el comando se incluye en la configuración de comprobación activa y se ejecuta cuando el agent activo lo recibe.
Los scripts manuales se envían al agent activo junto con el tiempo de espera de server/proxy para la ejecución del script. Aumente el tiempo de espera predeterminado de server/proxy para la ejecución del script. El tiempo de espera debe ser superior a la frecuencia de actualización de la comprobación activa; de lo contrario, el tiempo de espera se excederá antes de que el agent activo reciba el script y pueda devolver el resultado.
Tiempo de espera del script en Zabbix server/proxy
Vea a continuación un ejemplo de un script que se ejecuta en Zabbix server y la ventana de resultados:
sleep 11
df -h

También se recomienda optimizar el propio script (en lugar de ajustar el parámetro TrapperTimeout a un valor correspondiente (en nuestro caso, > 11), modificando la configuración de Zabbix server).