[comment]: # ({fc0a59fb-e25ccc09})
# 3 Benutzerdefinierte Alarmierungsskripte

[comment]: # ({/fc0a59fb-e25ccc09})

[comment]: # ({dbb571ef-bc410af8})
### Übersicht

Wenn Sie mit den vorhandenen Medientypen zum Senden von Benachrichtigungen nicht zufrieden sind, gibt es eine alternative Möglichkeit dafür.
Sie können ein Skript erstellen, das die Benachrichtigung auf Ihre Weise verarbeitet.

Benutzerdefinierte Alarmierungsskripte werden auf dem Zabbix Server ausgeführt.
Diese Skripte müssen sich in dem Verzeichnis befinden, das durch den Parameter [AlertScriptsPath](/manual/appendix/config/zabbix_server#alertscriptspath) in der Server-Konfigurationsdatei angegeben ist.

Hier ist ein Beispiel für ein benutzerdefiniertes Alarmierungsskript:

```bash
#!/bin/bash

to=$1
subject=$2
body=$3
host=$4
value=$5

cat <<EOF | mail -s "$subject" "$to"
$body

Host: $host
Value: $value
EOF
```

::: noteimportant
Zabbix prüft den Exit-Code der ausgeführten Befehle und Skripte.
Jeder Exit-Code, der ungleich **0** ist, wird als [Befehlsausführungsfehler](/manual/appendix/command_execution) betrachtet.
In solchen Fällen versucht Zabbix, die fehlgeschlagene Ausführung zu wiederholen.
:::

Umgebungsvariablen werden für das Skript weder beibehalten noch erstellt, daher sollten sie explizit behandelt werden.

[comment]: # ({/dbb571ef-bc410af8})

[comment]: # ({9d81bec0-47055351})
### Konfiguration

Um benutzerdefinierte Alarmskripte als Medientyp zu konfigurieren:

1. Gehen Sie zu *Alerts → Medientypen*.
2. Klicken Sie auf *Medientyp erstellen*.

Die Registerkarte **Medientyp** enthält allgemeine Attribute des Medientyps:

![](../../../../../assets/en/manual/config/notifications/media/media_script.png){width="600"}

Alle obligatorischen Eingabefelder sind mit einem roten Sternchen markiert.

Die folgenden Parameter sind spezifisch für den Skript-Medientyp:

|Parameter|Beschreibung|
|--|--------|
|*Skriptname*|Geben Sie den Namen der Skriptdatei ein (z. B. notification.sh), die sich in dem Verzeichnis befindet, das durch den Server-Konfigurationsparameter [AlertScriptsPath](/manual/appendix/config/zabbix_server#alertscriptspath) angegeben ist.|
|*Skriptparameter*|Fügen Sie optionale Skriptparameter hinzu, die in der Reihenfolge ihrer Definition als Befehlszeilenargumente an das Skript übergeben werden.<br><br>Skriptparameter unterstützen die Makros {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} sowie alle [Makros](/manual/appendix/macros/supported_by_location), die in Benachrichtigungen unterstützt werden, ebenso wie [Benutzermakros](/manual/appendix/macros/supported_by_location_user).|

Weitere Informationen zur Konfiguration von Standardnachrichten und Optionen zur Alarmverarbeitung finden Sie unter [allgemeine Medientyp-Parameter](/manual/config/notifications/media#common-parameters).

::: notewarning
Auch wenn ein Alarmskript keine Standardnachrichten verwendet, müssen die Nachrichtenvorlagen für die von diesem Medientyp verwendeten Operationstypen dennoch definiert sein.
Andernfalls wird keine Benachrichtigung gesendet.
:::

::: noteimportant
Wenn mehr als ein Skript-Medientyp konfiguriert ist, können diese Skripte von den Alerter-Prozessen parallel verarbeitet werden.
Die Gesamtzahl der Alerter-Prozesse ist durch den Parameter [`StartAlerters`](/manual/appendix/config/zabbix_server#startalerters) in der Server-Konfigurationsdatei begrenzt.
:::

[comment]: # ({/9d81bec0-47055351})

[comment]: # ({38908152-6a270eac})
### Testen

Um einen konfigurierten Skript-Medientyp zu testen:

1. Suchen Sie das betreffende Skript in der [Liste](/manual/config/notifications/media#overview) der Medientypen.

2. Klicken Sie in der letzten Spalte der Liste auf *Test*; ein Testformular wird in einem Popup-Fenster geöffnet.
Das Testformular enthält dieselbe Anzahl von Parametern, die für den Skript-Medientyp konfiguriert sind.

3. Bearbeiten Sie bei Bedarf die Werte der Skriptparameter. Die Bearbeitung wirkt sich nur auf den Testvorgang aus; die tatsächlichen Werte werden nicht geändert.

4. Klicken Sie auf *Test*.

![](../../../../../assets/en/manual/config/notifications/media/script_test.png){width="600"}

::: noteclassic
Beim Testen eines konfigurierten Skript-Medientyps werden {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} und Benutzermakros in ihre Werte aufgelöst,
Makros, die sich auf Ereignisse beziehen (z. B. {HOST.HOST}, {ITEM.LASTVALUE} usw.), werden jedoch nicht aufgelöst, da beim Testen kein zugehöriges Ereignis vorhanden ist, aus dem die Details ermittelt werden können.
Beachten Sie, dass Makros innerhalb von {ALERT.SUBJECT}- und {ALERT.MESSAGE}-Makros ebenfalls nicht aufgelöst werden.
Wenn der Wert von {ALERT.SUBJECT} beispielsweise aus "Problem: {EVENT.NAME}" besteht, wird das Makro {EVENT.NAME} nicht aufgelöst.
:::

[comment]: # ({/38908152-6a270eac})

[comment]: # ({df584c5a-525cb972})
### Benutzermedien

Sobald der Medientyp konfiguriert ist, gehen Sie zum Abschnitt *Users → Users* und bearbeiten Sie ein Benutzerprofil, indem Sie diesen Medientyp dem Benutzer zuweisen.
Die Schritte zum Einrichten von Benutzermedien, die für alle Medientypen gleich sind, werden auf der Seite [Medientypen](/manual/config/notifications/media#user-media) beschrieben.

Beachten Sie, dass beim Definieren der Benutzermedien das Feld *Send to* nicht leer sein darf.
Wenn dieses Feld im Alarmskript nicht verwendet wird, geben Sie eine beliebige Kombination unterstützter Zeichen ein, um die Validierungsanforderungen zu umgehen.

[comment]: # ({/df584c5a-525cb972})
