3 Skripte
Übersicht
Im Abschnitt Benachrichtigungen > Skripte können benutzerdefinierte globale Skripte konfiguriert und verwaltet werden.
Globale Skripte stehen je nach konfiguriertem Geltungsbereich und den Benutzerberechtigungen zur Ausführung zur Verfügung:
- über das Host-Menü an verschiedenen Stellen im Frontend (Dashboard, Probleme, Letzte Daten, Karten usw.)
- über das Ereignismenü
- sie können als Aktionsoperation ausgeführt werden
Die Skripte werden auf dem Zabbix Agent, dem Zabbix Server (Proxy) oder nur auf dem Zabbix Server ausgeführt. Siehe auch Befehlsausführung.
Sowohl auf dem Zabbix Agent als auch auf dem Zabbix Proxy sind Remote-Skripte standardmäßig deaktiviert. Sie können wie folgt aktiviert werden:
- Für Remote-Befehle, die auf dem Zabbix Agent ausgeführt werden:
- durch Hinzufügen eines Parameters
AllowKey=system.run[<command>,\*]für jeden erlaubten Befehl in der Agent-Konfiguration; * steht für den Modus wait und nowait;
- durch Hinzufügen eines Parameters
- Für Remote-Befehle, die auf dem Zabbix Proxy ausgeführt werden:
- Warnung: Es ist nicht erforderlich, Remote-Befehle auf dem Zabbix Proxy zu aktivieren, wenn Remote-Befehle auf dem Zabbix Agent ausgeführt werden, der vom Zabbix Proxy überwacht wird. Falls es jedoch erforderlich ist, Remote-Befehle auf dem Zabbix Proxy auszuführen, setzen Sie den Parameter EnableRemoteCommands in der Proxy-Konfiguration auf '1'.
Die Ausführung globaler Skripte auf dem Zabbix Server kann durch Setzen von EnableGlobalScripts=0 in der Server-Konfiguration deaktiviert werden.
Bei Neuinstallationen ist die Ausführung globaler Skripte auf dem Zabbix Server seit Zabbix 7.0 standardmäßig deaktiviert.
Eine Liste der vorhandenen Skripte mit ihren Details wird angezeigt.

Angezeigte Daten:
| Column | Description |
|---|---|
| Name | Name des Skripts. Ein Klick auf den Skriptnamen öffnet das Konfigurationsformular des Skripts. |
| Scope | Geltungsbereich des Skripts – Aktionsoperation, manuelle Host-Aktion oder manuelle Ereignisaktion. Diese Einstellung bestimmt, wo das Skript verfügbar ist. |
| Used in actions | Alle Aktionen, in denen das Skript verwendet wird, werden angezeigt, zusammen mit der Gesamtzahl dieser Aktionen. Ein Klick auf den Aktionsnamen öffnet das Aktionskonfigurationsformular. Wenn der Benutzer keine Berechtigungen für die Aktion hat, ist der Name nicht anklickbar. |
| Type | Der Skripttyp wird angezeigt – URL, Webhook, Skript, SSH-, Telnet- oder IPMI-Befehl. |
| Execute on | Es wird angezeigt, ob das Skript auf dem Zabbix Agent, dem Zabbix Proxy oder Server oder nur auf dem Zabbix Server ausgeführt wird. |
| Commands | Alle Befehle, die innerhalb des Skripts ausgeführt werden, werden angezeigt. Für webhooks wird hier nichts angezeigt. |
| User group | Die Benutzergruppe, für die das Skript verfügbar ist, wird angezeigt (oder All für alle Benutzergruppen). |
| Host group | Die Host-Gruppe, für die das Skript verfügbar ist, wird angezeigt (oder All für alle Host-Gruppen). |
| Host access | Die Berechtigungsstufe für die Host-Gruppe wird angezeigt – Read oder Write. Nur Benutzer mit der erforderlichen Berechtigungsstufe können das Skript ausführen. |
Um ein neues Skript zu konfigurieren, klicken Sie oben rechts auf die Schaltfläche Skript erstellen.
Optionen zur Massenbearbeitung
Eine Schaltfläche unterhalb der Liste bietet eine Option zur Massenbearbeitung:
- Löschen - die Skripte löschen
Um diese Option zu verwenden, markieren Sie die Kontrollkästchen vor den entsprechenden Skripten und klicken Sie auf Löschen.
Filter verwenden
Sie können den Filter verwenden, um nur die Skripte anzuzeigen, die Sie interessieren. Für eine bessere Suchleistung werden die Daten mit nicht aufgelösten Makros durchsucht.
Der Link Filter ist oberhalb der Skriptliste verfügbar. Wenn Sie darauf klicken, wird ein Filter eingeblendet, mit dem Sie Skripte nach Name und Geltungsbereich filtern können.

Konfiguration eines globalen Skripts

Es wird empfohlen, in globalen Skripten statt einfacher Makros Makrofunktionen zu verwenden, um die Sicherheit zu erhöhen, da Makros nicht automatisch maskiert werden.
Skriptattribute:
| Parameter | Beschreibung | |
|---|---|---|
| Name | Eindeutiger Name des Skripts. Z. B. Clear /tmp filesystem |
|
| Scope | Geltungsbereich des Skripts – Aktionsoperation, manuelle Host-Aktion oder manuelle Ereignisaktion. Diese Einstellung bestimmt, wo das Skript verwendet werden kann – in Remote-Befehlen von Aktionsoperationen, im Host-Menü bzw. im Ereignismenü. Wenn der Geltungsbereich auf „Aktionsoperation“ gesetzt ist, ist das Skript für alle Benutzer mit Zugriff auf Benachrichtigungen > Aktionen verfügbar. Wird ein Skript tatsächlich in einer Aktion verwendet, kann sein Geltungsbereich nicht von „Aktionsoperation“ weg geändert werden. Makrounterstützung Der Geltungsbereich beeinflusst den Bereich der verfügbaren Makros. Beispielsweise werden benutzerbezogene Makros ({USER.*}) in Skripten unterstützt, damit Informationen über den Benutzer übergeben werden können, der das Skript gestartet hat. Sie werden jedoch nicht unterstützt, wenn der Skript-Geltungsbereich eine Aktionsoperation ist, da Aktionsoperationen automatisch ausgeführt werden. Mit dem Makro {MANUALINPUT} kann bei der Ausführung des Skripts eine manuelle Eingabe angegeben werden. Es wird für Skripte mit manueller Host-Aktion und manueller Ereignisaktion unterstützt. Um herauszufinden, welche anderen Makros unterstützt werden, suchen Sie in der Tabelle unterstützte Makros nach „Trigger-based notifications and commands/Trigger-based commands“, „Manual host action scripts“ und „Manual event action scripts“. Beachten Sie, dass Sie Makros, die möglicherweise zu einem Wert mit Leerzeichen aufgelöst werden (zum Beispiel Host-Name), bei Bedarf in Anführungszeichen setzen müssen. |
|
| Menu path | Der gewünschte Menüpfad zum Skript. Zum Beispiel wird das Skript bei Default oder Default/ im entsprechenden Verzeichnis angezeigt. Menüs können verschachtelt sein, z. B. Main menu/Sub menu1/Sub menu2. Beim Zugriff auf Skripte über das Host-/Ereignismenü in Monitoring-Bereichen werden sie entsprechend den angegebenen Verzeichnissen organisiert.Dieses Feld wird nur angezeigt, wenn als Scope „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ausgewählt ist. |
|
| Type | Klicken Sie auf die entsprechende Schaltfläche, um den Skripttyp auszuwählen: URL, Webhook, Skript, SSH, Telnet oder IPMI-Befehl. Der Typ URL ist nur verfügbar, wenn als Scope „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ausgewählt ist. |
|
| Skripttyp: URL | ||
| URL | Geben Sie die URL für den Schnellzugriff aus dem Host-Menü oder Ereignismenü an. Makros und benutzerdefinierte Benutzermakros werden unterstützt. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Verwenden Sie in diesem Feld das Makro {MANUALINPUT}, um bei der Ausführung des Skripts eine manuelle Eingabe angeben zu können, zum Beispiel: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.viewMakrowerte dürfen nicht URL-kodiert sein. |
|
| Open in new window | Legt fest, ob die URL in einem neuen oder im selben Browser-Tab geöffnet werden soll. | |
| Skripttyp: Webhook | ||
| Parameters | Geben Sie die webhook-Variablen als Attribut-Wert-Paare an. Siehe auch: Medienkonfiguration Webhook. Makros und benutzerdefinierte Benutzermakros werden in Parameterwerten unterstützt. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). |
|
| Script | Geben Sie den JavaScript-Code im modalen Editor ein, der sich öffnet, wenn Sie in das Parameterfeld oder auf das Stiftsymbol daneben klicken. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Siehe auch: Medienkonfiguration Webhook, Zusätzliche JavaScript-Objekte. |
|
| Timeout | Zeitlimit für die JavaScript-Ausführung (1–60 s, Standard 30 s). Zeitsuffixe werden unterstützt, z. B. 30s, 1m. |
|
| Skripttyp: Skript | ||
| Execute on | Klicken Sie auf die entsprechende Schaltfläche, um das Shell-Skript auszuführen auf: Zabbix Agent – das Skript wird vom Zabbix Agent auf dem Host ausgeführt (wenn der Datenpunkt system.run erlaubt ist) Zabbix Proxy oder Server – das Skript wird von Zabbix Proxy oder Server ausgeführt, je nachdem, ob der Host vom Proxy oder vom Server überwacht wird. Es wird auf dem Proxy ausgeführt, wenn dies durch EnableRemoteCommands aktiviert ist. Es wird auf dem Server ausgeführt, wenn globale Skripte durch den Server-Parameter EnableGlobalScripts aktiviert sind. Zabbix Server – das Skript wird nur vom Zabbix Server ausgeführt. Diese Option ist nicht verfügbar, wenn globale Skripte durch den Server-Parameter EnableGlobalScripts deaktiviert sind. |
|
| Commands | Geben Sie den vollständigen Pfad zu den Befehlen ein, die innerhalb des Skripts ausgeführt werden sollen. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: SSH | ||
| Authentication method | Wählen Sie die Authentifizierungsmethode – Passwort oder öffentlicher Schlüssel. | |
| Username | Geben Sie den Benutzernamen ein. | |
| Password | Geben Sie das Passwort ein. Dieses Feld ist verfügbar, wenn als Authentifizierungsmethode „Passwort“ ausgewählt ist. |
|
| Public key file | Geben Sie den Pfad zur Datei mit dem öffentlichen Schlüssel ein. Dieses Feld ist verfügbar, wenn als Authentifizierungsmethode „Öffentlicher Schlüssel“ ausgewählt ist. |
|
| Private key file | Geben Sie den Pfad zur Datei mit dem privaten Schlüssel ein. Dieses Feld ist verfügbar, wenn als Authentifizierungsmethode „Öffentlicher Schlüssel“ ausgewählt ist. |
|
| Passphrase | Geben Sie die Passphrase ein. Dieses Feld ist verfügbar, wenn als Authentifizierungsmethode „Öffentlicher Schlüssel“ ausgewählt ist. |
|
| Port | Geben Sie den Port des entfernten SSH-Dienstes auf dem Ziel-Host ein, zu dem Zabbix eine Verbindung herstellt. | |
| Commands | Geben Sie die Befehle ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: Telnet | ||
| Username | Geben Sie den Benutzernamen ein. | |
| Password | Geben Sie das Passwort ein. | |
| Port | Geben Sie den Port des entfernten Telnet-Dienstes auf dem Ziel-Host ein, zu dem Zabbix eine Verbindung herstellt. | |
| Commands | Geben Sie die Befehle ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: IPMI | ||
| Command | Geben Sie den IPMI-Befehl ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe Scope oben). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Description | Geben Sie eine Beschreibung für das Skript ein. | |
| Host group | Wählen Sie die Host-Gruppe aus, für die das Skript verfügbar sein soll (oder Alle für alle Host-Gruppen). | |
| User group | Wählen Sie die Benutzergruppe aus, für die das Skript verfügbar sein soll (oder Alle für alle Benutzergruppen). Dieses Feld wird nur angezeigt, wenn als Scope „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ausgewählt ist. |
|
| Required host permissions | Wählen Sie die Berechtigungsstufe für die Host-Gruppe – Lesen oder Schreiben. Nur Benutzer mit der erforderlichen Berechtigungsstufe haben Zugriff auf die Ausführung des Skripts. Dieses Feld wird nur angezeigt, wenn als Scope „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ausgewählt ist. |
|
| Advanced configuration | Klicken Sie auf die Bezeichnung Erweiterte Konfiguration, um die Optionen der erweiterten Konfiguration anzuzeigen. Dieses Feld wird nur angezeigt, wenn als Scope „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ausgewählt ist. |
|
Erweiterte Konfiguration
Erweiterte Konfigurationsoptionen sind in einem einklappbaren Abschnitt Erweiterte Konfiguration verfügbar:

| Parameter | Beschreibung |
|---|---|
| Benutzereingabe aktivieren | Aktivieren Sie das Kontrollkästchen, um vor der Ausführung des Skripts eine manuelle Benutzereingabe zu ermöglichen. Die manuelle Benutzereingabe ersetzt den Wert des Makros {MANUALINPUT} im Skript. Siehe auch: Manuelle Benutzereingabe. |
| Eingabeaufforderung | Geben Sie einen benutzerdefinierten Text ein, der zur benutzerdefinierten Benutzereingabe auffordert. Dieser Text wird oberhalb des Eingabefelds im Popup Manuelle Eingabe angezeigt. Um eine Vorschau des Popups Manuelle Eingabe anzuzeigen, klicken Sie auf Benutzereingabe testen. In der Vorschau können Sie auch prüfen, ob die Eingabezeichenfolge der Eingabevalidierungsregel entspricht (siehe Parameter unten). Die Unterstützung für Makros und Benutzermakros hängt vom Geltungsbereich des Skripts ab (siehe Geltungsbereich in den allgemeinen Konfigurationsparametern des Skripts). |
| Eingabetyp | Wählen Sie den Typ der manuellen Eingabe aus: Zeichenfolge - einzelne Zeichenfolge; Dropdown - der Wert wird aus mehreren Dropdown-Optionen ausgewählt. |
| Dropdown-Optionen | Geben Sie eindeutige Werte für das Dropdown der Benutzereingabe als kommagetrennte Liste ein. Um eine leere Option in das Dropdown aufzunehmen, fügen Sie am Anfang, in der Mitte oder am Ende der Liste ein zusätzliches Komma ein. Dieses Feld wird nur angezeigt, wenn als Eingabetyp „Dropdown“ ausgewählt ist. |
| Standard-Eingabezeichenfolge | Geben Sie die Standardzeichenfolge für die Benutzereingabe ein (oder keine). Dieses Feld wird anhand des regulären Ausdrucks validiert, der im Feld Eingabevalidierungsregel angegeben ist. Der hier eingegebene Wert wird standardmäßig im Popup Manuelle Eingabe angezeigt. Dieses Feld wird nur angezeigt, wenn als Eingabetyp „Zeichenfolge“ ausgewählt ist. |
| Eingabevalidierungsregel | Geben Sie einen regulären Ausdruck ein, um die Benutzereingabezeichenfolge zu validieren. Globale reguläre Ausdrücke werden unterstützt. Dieses Feld wird nur angezeigt, wenn als Eingabetyp „Zeichenfolge“ ausgewählt ist. |
| Bestätigung aktivieren | Aktivieren Sie das Kontrollkästchen, um vor der Ausführung des Skripts eine Bestätigungsmeldung anzuzeigen. Diese Funktion kann besonders bei potenziell gefährlichen Vorgängen (wie einem Neustartskript) oder solchen, die lange dauern können, nützlich sein. |
| Bestätigungstext | Geben Sie einen benutzerdefinierten Bestätigungstext für das mit dem obigen Kontrollkästchen aktivierte Bestätigungs-Popup ein (zum Beispiel Das entfernte System wird neu gestartet. Sind Sie sicher?). Um zu sehen, wie der Text aussehen wird, klicken Sie neben dem Feld auf Bestätigung testen. Makros und benutzerdefinierte Benutzermakros werden unterstützt. Hinweis: Die Makros werden beim Testen der Bestätigungsmeldung nicht erweitert. |
Wenn sowohl eine manuelle Benutzereingabe als auch eine Bestätigungsmeldung konfiguriert sind, werden sie in aufeinanderfolgenden Popup-Fenstern angezeigt.
Manuelle Benutzereingabe
Die manuelle Benutzereingabe ermöglicht es, bei jeder Ausführung des Skripts einen benutzerdefinierten Parameter anzugeben. Dadurch entfällt die Notwendigkeit, mehrere ähnliche Benutzerskripte zu erstellen, die sich nur in einem einzelnen Parameter unterscheiden.
Beispielsweise möchten Sie dem Skript während der Ausführung möglicherweise eine andere Ganzzahl oder eine andere URL-Adresse übergeben.
So aktivieren Sie die manuelle Benutzereingabe:
- verwenden Sie das Makro {MANUALINPUT} im Skript (Befehle, Skript, Skriptparameter), wo erforderlich; oder im URL-Feld von URL-Skripten;
- aktivieren Sie in der erweiterten Skriptkonfiguration die manuelle Benutzereingabe und konfigurieren Sie die Eingabeoptionen.
Wenn die Benutzereingabe aktiviert ist, wird dem Benutzer vor der Ausführung des Skripts ein Popup Manuelle Eingabe angezeigt, in dem er aufgefordert wird, einen benutzerdefinierten Wert anzugeben. Der angegebene Wert ersetzt {MANUALINPUT} im Skript.
Abhängig von der Konfiguration wird der Benutzer aufgefordert, einen Zeichenfolgenwert einzugeben:

Oder einen Wert aus einer Dropdown-Liste mit vordefinierten Optionen auszuwählen:

Die manuelle Benutzereingabe ist nur für Skripte verfügbar, deren Geltungsbereich „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ ist.
Skriptausführung und Ergebnis
Vom Zabbix Server ausgeführte Skripte werden in der auf der Seite Befehlsausführung beschriebenen Reihenfolge ausgeführt.
Das Skriptergebnis wird in einem Pop-up-Fenster angezeigt, das nach der Ausführung des Skripts erscheint. Der Rückgabewert des Skripts ist eine Standardausgabe:
- Wenn das Skript erfolgreich abgeschlossen wird (Exit-Code
0), ist der Rückgabewert auf 16 MB begrenzt (einschließlich nachgestellter Leerzeichen, die abgeschnitten werden). - Wenn das Skript mit einem Fehler beendet wird (Exit-Code ungleich null), ist der Rückgabewert eine Standardfehlerausgabe, die auf 2 KB begrenzt ist.
Zabbix speichert eine erweiterte Skriptausgabe standardmäßig nicht. Um die vollständigen Ausgabedetails beizubehalten, können Sie die Protokollierung im Skript selbst implementieren (z. B. durch Umleitung der Ausgabe in eine lokale Protokolldatei).
Beachten Sie, dass für Skripte, die entweder auf dem Zabbix Server oder dem Zabbix Proxy ausgeführt werden, auch Datenbankgrenzwerte gelten.
Nachfolgend sehen Sie ein Beispiel für ein Skript und das Ergebnisfenster:
uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"

Das Skriptergebnis zeigt nicht das Skript selbst an.
Skript-Timeout
Zabbix Agent
Es kann vorkommen, dass beim Ausführen eines Skripts ein Timeout auftritt.
Nachfolgend sehen Sie ein Beispiel für ein Skript, das auf dem Zabbix Agent ausgeführt wird, sowie das Ergebnisfenster:
sleep 5
df -h

Die Fehlermeldung lautet in diesem Fall wie folgt:
Timeout while executing a shell script.
Um solche Situationen zu vermeiden, wird empfohlen, das Skript selbst zu optimieren (im obigen Beispiel „5“), anstatt den Parameter Timeout in der Zabbix-Agent-Konfiguration und der Zabbix-Server-Konfiguration anzupassen.
Für den Zabbix Agent im aktiven Modus sollte der Parameter Timeout in der Zabbix-Server-Konfiguration jedoch mindestens einige Sekunden länger sein als der Parameter RefreshActiveChecks in der Zabbix-Agent-Konfiguration.
Dadurch wird sichergestellt, dass der Server genügend Zeit hat, die Ergebnisse der aktiven Prüfungen vom Agent zu empfangen.
Beachten Sie, dass die Skriptausführung auf einem aktiven Agent seit Zabbix Agent 7.0 unterstützt wird.
Falls der Parameter Timeout in der Zabbix-Agent-Konfiguration geändert wurde, erscheint die folgende Fehlermeldung:
Get value from agent failed: ZBX_TCP_READ() timed out.
Das bedeutet, dass die Änderung in der Zabbix-Agent-Konfiguration vorgenommen wurde, der Parameter Timeout jedoch zusätzlich auch in der Zabbix-Server-Konfiguration geändert werden muss.
Zabbix Server/Proxy
Nachfolgend sehen Sie ein Beispiel für ein Skript, das auf dem Zabbix Server ausgeführt wird, sowie das Ergebnisfenster:
sleep 11
df -h

Es wird außerdem empfohlen, das Skript selbst zu optimieren (anstatt den Parameter TrapperTimeout durch Änderung der Zabbix Server-Konfiguration auf einen entsprechenden Wert anzupassen (in unserem Fall > 11)).