3 Skripte
Übersicht
Im Bereich Alarme > Skripte können benutzerdefinierte globale Skripte konfiguriert und verwaltet werden.
Dieses Menü ist nur für Benutzer des Benutzertyps SuperAdmin verfügbar.
Globale Skripte stehen abhängig vom konfigurierten Geltungsbereich und den Benutzerberechtigungen zur Ausführung zur Verfügung:
- Im Host-Menü an verschiedenen Stellen im Frontend (Dashboard, Probleme, Neueste Daten, Karten usw.).
- Im Ereignismenü.
- Sie können als Operation einer Aktion ausgeführt werden.
Die Skripte werden auf dem Zabbix Agent, dem Zabbix Server (Proxy) oder ausschließlich auf dem Zabbix Server ausgeführt. Siehe auch Befehlsausführung.
Remote-Skripte sind sowohl auf dem Zabbix Agent als auch auf dem Zabbix Proxy standardmäßig deaktiviert. Sie können wie folgt aktiviert werden:
- Für Remote-Befehle, die auf dem Zabbix Agent ausgeführt werden:
- Fügen Sie für jeden zulässigen Befehl einen Parameter
AllowKey=system.run[<command>,\*]zur Agent-Konfiguration hinzu;\*steht für den Modus wait und nowait.
- Fügen Sie für jeden zulässigen Befehl einen Parameter
- 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 einem vom Zabbix Proxy überwachten Zabbix Agent ausgeführt werden. Wenn Remote-Befehle jedoch auf dem Zabbix Proxy ausgeführt werden müssen, setzen Sie den Parameter EnableRemoteCommands in der Proxy-Konfiguration auf „1“.
Die Ausführung globaler Skripte auf dem Zabbix Server kann deaktiviert werden, indem EnableGlobalScripts=0 in der Server-Konfiguration gesetzt wird.
Bei neuen Installationen 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:
| Spalte | Beschreibung |
|---|---|
| Name | Name des Skripts. Durch Klicken auf den Skriptnamen wird das Konfigurationsformular für Skripte geöffnet. |
| Geltungsbereich | Geltungsbereich des Skripts – Aktionsoperation, manuelle Host-Aktion oder manuelle Ereignisaktion. Diese Einstellung bestimmt, wo das Skript verfügbar ist – in Remote-Befehlen von Aktionsoperationen, im Host-Menü oder im Ereignismenü. |
| In Aktionen verwendet | Alle Aktionen, in denen das Skript verwendet wird, werden angezeigt, vorangestellt von der Gesamtzahl dieser Aktionen. Durch Klicken auf den Aktionsnamen wird das Konfigurationsformular für Aktionen geöffnet. Wenn der Benutzer keine Berechtigungen für die Aktion besitzt, ist der Name nicht anklickbar. |
| Typ | Der Skripttyp wird angezeigt – Befehl URL, Webhook, Skript, SSH, Telnet oder IPMI. |
| Ausführen auf | Es wird angezeigt, ob das Skript auf dem Zabbix Agent, dem Zabbix Proxy oder dem Server oder ausschließlich auf dem Zabbix Server ausgeführt wird. |
| Befehle | Alle innerhalb des Skripts auszuführenden Befehle werden angezeigt. Für Webhooks wird hier nichts angezeigt. |
| Benutzergruppe | Die Benutzergruppe, für die das Skript verfügbar ist, wird angezeigt (oder Alle für alle Benutzergruppen). |
| Hostgruppe | Die Hostgruppe, für die das Skript verfügbar ist, wird angezeigt (oder Alle für alle Hostgruppen). |
| Host-Zugriff | Die Berechtigungsstufe für die Hostgruppe wird angezeigt – Lesen oder Schreiben. 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 für die Massenbearbeitung
Eine Schaltfläche unter der Liste bietet eine Option für die Massenbearbeitung:
- Löschen - die Skripte löschen
Um diese Option zu verwenden, markieren Sie die Kontrollkästchen vor den jeweiligen Skripten und klicken Sie auf Löschen.
Filter verwenden
Sie können den Filter verwenden, um nur die Skripte anzuzeigen, an denen Sie interessiert sind. 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 angezeigt, mit dem Sie Skripte nach Name und Geltungsbereich filtern können.

Konfigurieren eines globalen Skripts

Es wird empfohlen, in globalen Skripten Makrofunktionen anstelle einfacher Makros zu verwenden, um die Sicherheit zu erhöhen, da Makros nicht automatisch maskiert werden.
Skriptattribute:
| Parameter | Beschreibung | |
|---|---|---|
| Name | Eindeutiger Name des Skripts. Beispiel: Clear /tmp filesystem |
|
| Geltungsbereich | Geltungsbereich des Skripts - Aktionsvorgang, manuelle Host-Aktion oder manuelle Ereignisaktion. Diese Einstellung bestimmt, wo das Skript verwendet werden kann - in Remote-Befehlen von Aktionsvorgängen, im Host-Menü oder im Ereignismenü. Wenn der Geltungsbereich auf „Aktionsvorgang“ gesetzt wird, ist das Skript für alle Benutzer mit Zugriff auf Alarme > Aktionen verfügbar. Wenn ein Skript tatsächlich in einer Aktion verwendet wird, kann sein Geltungsbereich nicht von „Aktionsvorgang“ weg geändert werden. Makrounterstützung Der Geltungsbereich beeinflusst den Umfang der verfügbaren Makros. Beispielsweise werden benutzerbezogene Makros ( {USER.*}) in Skripten unterstützt, um die Übergabe von Informationen über den Benutzer zu ermöglichen, der das Skript gestartet hat. Sie werden jedoch nicht unterstützt, wenn der Geltungsbereich des Skripts „Aktionsvorgang“ ist, da Aktionsvorgänge automatisch ausgeführt werden.Mit einem {MANUALINPUT}-Makro können Sie eine manuelle Eingabe zum Zeitpunkt der Skriptausführung angeben. Es wird für Skripte für manuelle Host-Aktionen und manuelle Ereignisaktionen unterstützt. Welche anderen Makros unterstützt werden, erfahren Sie, indem 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“ suchen. Beachten Sie, dass Sie ein Makro, das zu einem Wert mit Leerzeichen aufgelöst werden kann (z. B. ein Hostname), bei Bedarf in Anführungszeichen setzen müssen. |
|
| Menüpfad | Der gewünschte Menüpfad zum Skript. Beispielsweise wird das Skript bei Default oder Default/ im entsprechenden Verzeichnis angezeigt. Menüs können verschachtelt werden, z. B. Main menu/Sub menu1/Sub menu2. Beim Zugriff auf Skripte über das Host- oder Ereignismenü in den Monitoring-Bereichen werden sie entsprechend den angegebenen Verzeichnissen organisiert.Dieses Feld wird nur angezeigt, wenn „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ als Geltungsbereich ausgewählt ist. |
|
| Typ | 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 „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ als Geltungsbereich ausgewählt ist. |
|
| Skripttyp: URL | ||
| URL | Geben Sie die URL für den Schnellzugriff über das Host-Menü oder Ereignismenü an. Makros und benutzerdefinierte Benutzermakros werden unterstützt. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe oben unter Geltungsbereich). Verwenden Sie das {MANUALINPUT}-Makro in diesem Feld, um eine manuelle Eingabe zum Zeitpunkt der Skriptausführung angeben zu können, zum Beispiel: http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.viewMakrowerte dürfen nicht URL-codiert werden. |
|
| In neuem Fenster öffnen | Legt fest, ob die URL in einem neuen oder im selben Browser-Tab geöffnet werden soll. | |
| Skripttyp: Webhook | ||
| Parameter | 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 oben unter Geltungsbereich). |
|
| Skript | Geben Sie den JavaScript-Code im modalen Editor ein, der geöffnet wird, wenn Sie in das Parameterfeld oder auf das Stiftsymbol daneben klicken. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe oben unter Geltungsbereich). Siehe auch: Medienkonfiguration Webhook, Zusätzliche JavaScript-Objekte. |
|
| Zeitüberschreitung | Zeitüberschreitung für die JavaScript-Ausführung (1-60 s, Standard: 30 s). Zeitsuffixe werden unterstützt (z. B. 30s, 1m). |
|
| Skripttyp: Skript | ||
| Ausführen auf | 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 system.run-Datenpunkt zugelassen ist) Zabbix Proxy oder Server - das Skript wird vom Zabbix Proxy oder Server ausgeführt, abhängig davon, ob der Host vom Proxy oder 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 Serverparameter EnableGlobalScripts aktiviert sind. Zabbix Server - das Skript wird ausschließlich vom Zabbix Server ausgeführt. Diese Option ist nicht verfügbar, wenn globale Skripte durch den Serverparameter EnableGlobalScripts deaktiviert sind. |
|
| Befehle | 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 oben unter Geltungsbereich). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: SSH | ||
| Authentifizierungsmethode | Wählen Sie die Authentifizierungsmethode aus - Passwort oder öffentlicher Schlüssel. | |
| Benutzername | Geben Sie den Benutzernamen ein. | |
| Passwort | Geben Sie das Passwort ein. Dieses Feld ist verfügbar, wenn „Passwort“ als Authentifizierungsmethode ausgewählt ist. |
|
| Datei des öffentlichen Schlüssels | Geben Sie den Pfad zur Datei des öffentlichen Schlüssels ein. Dieses Feld ist verfügbar, wenn „Öffentlicher Schlüssel“ als Authentifizierungsmethode ausgewählt ist. |
|
| Datei des privaten Schlüssels | Geben Sie den Pfad zur Datei des privaten Schlüssels ein. Dieses Feld ist verfügbar, wenn „Öffentlicher Schlüssel“ als Authentifizierungsmethode ausgewählt ist. |
|
| Passphrase | Geben Sie die Passphrase ein. Dieses Feld ist verfügbar, wenn „Öffentlicher Schlüssel“ als Authentifizierungsmethode ausgewählt ist. |
|
| Port | Geben Sie den Port des Remote-SSH-Dienstes auf dem Zielhost ein, mit dem Zabbix eine Verbindung herstellt. | |
| Befehle | Geben Sie die Befehle ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe oben unter Geltungsbereich). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: Telnet | ||
| Benutzername | Geben Sie den Benutzernamen ein. | |
| Passwort | Geben Sie das Passwort ein. | |
| Port | Geben Sie den Port des Remote-Telnet-Dienstes auf dem Zielhost ein, mit dem Zabbix eine Verbindung herstellt. | |
| Befehle | Geben Sie die Befehle ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe oben unter Geltungsbereich). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Skripttyp: IPMI | ||
| Befehl | Geben Sie den IPMI-Befehl ein. Die Makrounterstützung hängt vom Geltungsbereich des Skripts ab (siehe oben unter Geltungsbereich). Benutzerdefinierte Benutzermakros werden unterstützt. |
|
| Beschreibung | Geben Sie eine Beschreibung für das Skript ein. | |
| Hostgruppe | Wählen Sie die Hostgruppe aus, für die das Skript verfügbar sein soll (oder Alle für alle Hostgruppen). | |
| Benutzergruppe | 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 „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ als Geltungsbereich ausgewählt ist. |
|
| Erforderliche Hostberechtigungen | Wählen Sie die Berechtigungsstufe für die Hostgruppe aus - Lesen oder Schreiben. Nur Benutzer mit der erforderlichen Berechtigungsstufe können das Skript ausführen. Dieses Feld wird nur angezeigt, wenn „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ als Geltungsbereich ausgewählt ist. |
|
| Erweiterte Konfiguration | Klicken Sie auf die Überschrift Erweiterte Konfiguration, um die Optionen der erweiterten Konfiguration anzuzeigen. Dieses Feld wird nur angezeigt, wenn „Manuelle Host-Aktion“ oder „Manuelle Ereignisaktion“ als Geltungsbereich ausgewählt ist. |
|
Erweiterte Konfiguration
Erweiterte Konfigurationsoptionen sind im aufklappbaren 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 Makrowert {MANUALINPUT} im Skript. Siehe auch: Manuelle Benutzereingabe. |
| Eingabeaufforderung | Geben Sie einen benutzerdefinierten Text ein, der zur Eingabe auffordert. Dieser Text wird über dem Eingabefeld im Popup Manuelle Eingabe angezeigt. Um eine Vorschau des Popups Manuelle Eingabe anzuzeigen, klicken Sie auf Benutzereingabe testen. In der Vorschau können Sie außerdem testen, ob die Eingabezeichenfolge der Eingabevalidierungsregel entspricht (siehe die folgenden Parameter). Die Unterstützung von Makros und Benutzermakros hängt vom Geltungsbereich des Skripts ab (siehe Geltungsbereich in den allgemeinen Konfigurationsparametern für Skripte). |
| 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-Menü der Benutzereingabe als durch Kommas getrennte Liste ein. Um eine leere Option in das Dropdown-Menü 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 Dropdown als Eingabetyp 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 Zeichenfolge als Eingabetyp ausgewählt ist. |
| Eingabevalidierungsregel | Geben Sie einen regulären Ausdruck zur Validierung der Benutzereingabezeichenfolge ein. Globale reguläre Ausdrücke werden unterstützt. Dieses Feld wird nur angezeigt, wenn Zeichenfolge als Eingabetyp 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 (z. B. einem Neustartskript) oder bei Vorgängen nützlich sein, die möglicherweise lange dauern. |
| Bestätigungstext | Geben Sie einen benutzerdefinierten Bestätigungstext für das mit dem obigen Kontrollkästchen aktivierte Bestätigungs-Popup ein (z. B. Das Remotesystem wird neu gestartet. Sind Sie sicher?). Um zu sehen, wie der Text angezeigt 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 aufgelöst. |
Wenn sowohl eine manuelle Benutzereingabe als auch eine Bestätigungsmeldung konfiguriert sind, werden sie in aufeinanderfolgenden Popup-Fenstern angezeigt.
Manuelle Benutzereingabe
Mit der manuellen Benutzereingabe kann bei jeder Ausführung des Skripts ein benutzerdefinierter Parameter angegeben werden. Dadurch entfällt die Notwendigkeit, mehrere ähnliche Benutzerskripte zu erstellen, die sich nur durch einen einzelnen Parameter unterscheiden.
Beispielsweise können Sie dem Skript während der Ausführung 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) an der erforderlichen Stelle 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 Skriptausführung ein Popup-Fenster Manuelle Eingabe angezeigt, in dem er aufgefordert wird, einen benutzerdefinierten Wert anzugeben. Der angegebene Wert ersetzt {MANUALINPUT} im Skript.
Je nach Konfiguration wird der Benutzer aufgefordert, einen Zeichenfolgenwert einzugeben:

Oder den 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“ lautet.
Skriptausführung und Ergebnis
Skripte, die vom Zabbix Server ausgeführt werden, werden in der auf der Befehlsausführungsseite beschriebenen Reihenfolge ausgeführt.
Das Skriptergebnis wird in einem Popup-Fenster angezeigt, das nach der Ausführung des Skripts erscheint. Der Rückgabewert des Skripts ist eine Standardausgabe:
- Wenn das Skript erfolgreich beendet wird (Exit-Code
0), ist der Rückgabewert auf 16 MB begrenzt (einschließlich nachfolgender 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 standardmäßig keine erweiterten Skriptausgaben. Um vollständige Ausgabedetails zu erhalten, können Sie die Protokollierung direkt im Skript selbst implementieren (z. B. die Ausgabe in eine lokale Protokolldatei umleiten).
Beachten Sie, dass für Skripte, die entweder auf dem Zabbix Server oder dem Zabbix Proxy ausgeführt werden, auch Datenbanklimits gelten.
Nachfolgend 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 das Skript selbst nicht an.
Skript-Timeout auf dem 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.
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 auch in der Zabbix Server-Konfiguration geändert werden muss.
Skript-Timeout bei aktiven Agenten
Es ist möglich, Skripte nur auf Agenten auszuführen, die im aktiven Modus arbeiten. Sobald die Skriptausführung durch eine Operation einer Aktion oder durch die manuelle Skriptausführung ausgelöst wird, wird der Befehl in die Konfiguration der aktiven Prüfungen aufgenommen und ausgeführt, sobald der aktive Agent ihn empfängt.
Manuelle Skripte werden zusammen mit dem Server-/Proxy-Timeout für die Skriptausführung an den aktiven Agenten gesendet. Bitte erhöhen Sie das Standard-Timeout des Server/Proxy für die Skriptausführung. Das Timeout muss höher sein als die Aktualisierungshäufigkeit der aktiven Prüfungen, andernfalls wird das Timeout überschritten, bevor der aktive Agent das Skript empfängt und das Ergebnis zurückgeben kann.
Skript-Timeout auf 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 Anpassen der Zabbix Server-Konfiguration auf einen entsprechenden Wert zu setzen (in unserem Fall > 11)).