[comment]: # ({fc0a59fb-e25ccc09})
# 3 Scripts d’alerte personnalisés

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

[comment]: # ({dbb571ef-bc410af8})
### Vue d'ensemble

Si vous n'êtes pas satisfait des types de média existants pour l'envoi des alertes, il existe une autre façon de procéder.
Vous pouvez créer un script qui gérera la notification à votre manière.

Les scripts d'alerte personnalisés sont exécutés sur le serveur Zabbix.
Ces scripts doivent se trouver dans le répertoire spécifié par le paramètre [AlertScriptsPath](/manual/appendix/config/zabbix_server#alertscriptspath) du fichier de configuration du serveur.

Voici un exemple de script d'alerte personnalisé :

```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 vérifie le code de sortie des commandes et scripts exécutés.
Tout code de sortie différent de **0** est considéré comme une erreur de [command execution](/manual/appendix/command_execution).
Dans de tels cas, Zabbix tentera de répéter l'exécution ayant échoué.
:::

Les variables d'environnement ne sont ni conservées ni créées pour le script, elles doivent donc être gérées explicitement.

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

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

Pour configurer des scripts d'alerte personnalisés comme type de média :

1. Accédez à *Alertes → Types de média*.
2. Cliquez sur *Créer un type de média*.

L'onglet **Type de média** contient les attributs généraux du type de média :

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

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Les paramètres suivants sont spécifiques au type de média de script :

|Parameter|Description|
|--|--------|
|*Script name*|Entrez le nom du fichier de script (par exemple, notification.sh) situé dans le répertoire spécifié par le paramètre de configuration du serveur [AlertScriptsPath](/manual/appendix/config/zabbix_server#alertscriptspath).|
|*Script parameters*|Ajoutez des paramètres de script facultatifs qui seront transmis au script sous forme d'arguments de ligne de commande dans l'ordre dans lequel ils sont définis.<br><br>Les paramètres de script prennent en charge les macros {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE}, ainsi que toutes les [macros](/manual/appendix/macros/supported_by_location) prises en charge dans les notifications, de même que les [macros utilisateur](/manual/appendix/macros/supported_by_location_user).|

Consultez les [paramètres communs des types de média](/manual/config/notifications/media#common-parameters) pour plus de détails sur la configuration des messages par défaut et des options de traitement des alertes.

::: notewarning
Même si un script d'alerte n'utilise pas les messages par défaut, les modèles de message pour les types d'opération utilisés par ce type de média doivent tout de même être définis.
Sinon, aucune notification ne sera envoyée.
:::

::: noteimportant
Si plusieurs types de média de script sont configurés, ces scripts peuvent être traités en parallèle par les processus d'alerte.
Le nombre total de processus d'alerte est limité par le paramètre [`StartAlerters`](/manual/appendix/config/zabbix_server#startalerters) du fichier de configuration du serveur.
:::

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

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

Pour tester un type de média script configuré :

1. Localisez le script concerné dans la [liste](/manual/config/notifications/media#overview) des types de média.

2. Cliquez sur *Test* dans la dernière colonne de la liste ; un formulaire de test s'ouvrira dans une fenêtre contextuelle.
Le formulaire de test contiendra le même nombre de paramètres que ceux configurés pour le type de média script.

3. Modifiez les valeurs des paramètres du script si nécessaire. La modification n'affecte que la procédure de test ; les valeurs réelles ne seront pas modifiées.

4. Cliquez sur *Test*.

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

::: noteclassic
Lors du test d'un type de média script configuré, {ALERT.SENDTO}, {ALERT.SUBJECT}, {ALERT.MESSAGE} et les macros utilisateur seront résolus selon leurs valeurs,
mais les macros liées aux événements (par exemple, {HOST.HOST}, {ITEM.LASTVALUE}, etc.) ne seront pas résolues, car pendant le test il n'existe aucun événement associé à partir duquel obtenir les détails.
Notez que les macros contenues dans les macros {ALERT.SUBJECT} et {ALERT.MESSAGE} ne seront pas non plus résolues.
Par exemple, si la valeur de {ALERT.SUBJECT} est composée de "Problem: {EVENT.NAME}", alors la macro {EVENT.NAME} ne sera pas résolue.
:::

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

[comment]: # ({df584c5a-525cb972})
### Média utilisateur

Une fois le type de média configuré, accédez à la section *Users → Users* et modifiez un profil utilisateur en attribuant ce type de média à l'utilisateur.
Les étapes de configuration du média utilisateur, communes à tous les types de média, sont décrites sur la page [Media types](/manual/config/notifications/media#user-media).

Notez que lors de la définition du média utilisateur, le champ *Send to* ne peut pas être vide.
Si ce champ n'est pas utilisé dans le script d'alerte, saisissez n'importe quelle combinaison de caractères pris en charge pour contourner les exigences de validation.

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