[comment]: # ({70a6015a-70a6015a})
# 5 Paramètres utilisateurs

[comment]: # ({/70a6015a-70a6015a})

[comment]: # ({a2e89be7-9a4b2756})
#### Vue d'ensemble

Il peut parfois être utile d'exécuter une vérification d'agent qui n'est pas fournie par défaut avec Zabbix. C'est là que les paramètres utilisateur entrent en jeu.

Vous pouvez écrire une commande qui récupère les données dont vous avez besoin et l'inclure dans le paramètre utilisateur du [fichier de configuration de l'agent](/manual/appendix/config/zabbix_agentd) (paramètre de configuration 'UserParameter').

Un paramètre utilisateur a la syntaxe suivante :

    UserParameter=<key>,<command>

Comme vous pouvez le voir, un paramètre utilisateur contient également une clé. Cette clé sera nécessaire lors de la configuration d'un élément. Saisissez une clé de votre choix, facile à référencer (elle doit être unique au sein d'un hôte).

Redémarrez l'agent ou utilisez l'option de [contrôle à l'exécution](/manual/concepts/agent#runtime-control) de l'agent pour prendre en compte le nouveau paramètre, par exemple :

    zabbix_agentd -R userparameter_reload

Ensuite, lors de la [configuration d'un élément](/manual/config/items/item), saisissez la clé pour référencer la commande du paramètre utilisateur que vous souhaitez exécuter.

Les paramètres utilisateur sont des commandes exécutées par l'agent Zabbix.
Notez que jusqu'à 16 Mo de données peuvent être renvoyés avant les étapes de [prétraitement de la valeur de l'élément](/manual/config/items/preprocessing).

**/bin/sh** est utilisé comme interpréteur de ligne de commande sous les systèmes d'exploitation UNIX.
Les paramètres utilisateur respectent le délai d'attente de la vérification de l'agent ; si le délai est atteint, le processus de paramètre utilisateur forké est समाप्त?

[comment]: # ({/a2e89be7-9a4b2756})

[comment]: # ({53dfad45-53dfad45})
##### Exemples de paramètres utilisateur simples

Une commande simple :

 UserParameter=ping,echo 1

L'agent renverra toujours '1' pour une élément avec la clé 'ping'.

Un exemple plus complexe :

 UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

L'agent renverra '1', si le serveur MySQL est actif, '0' - sinon.

[comment]: # ({/53dfad45-53dfad45})

[comment]: # ({64b08883-e619711f})
#### Paramètres utilisateur flexibles

Les paramètres utilisateur flexibles acceptent des paramètres avec la clé. De cette façon, un paramètre utilisateur flexible peut servir de base à la création de plusieurs éléments.

Les paramètres utilisateur flexibles ont la syntaxe suivante :

    UserParameter=key[*],command

|Parameter|Description|
|--|--------|
|**Key**|Clé d'élément unique. Le \[\*\] définit que cette clé accepte des paramètres entre les crochets.<br>Les paramètres sont fournis lors de la configuration de l'élément.|
|**Command**|Commande à exécuter pour évaluer la valeur de la clé.<br>*Pour les paramètres utilisateur flexibles uniquement* :<br>Vous pouvez utiliser des références positionnelles $1…$9 dans la commande pour faire référence au paramètre correspondant dans la clé de l'élément.<br>Zabbix analyse les paramètres placés entre \[ \] de la clé de l'élément et substitue $1,...,$9 dans la commande en conséquence.<br>$0 sera remplacé par la commande d'origine (avant l'expansion de $0,...,$9) à exécuter.<br>Les références positionnelles sont interprétées qu'elles soient placées entre guillemets doubles (") ou simples (').<br>Pour utiliser les références positionnelles sans modification, spécifiez un double signe dollar - par exemple, awk '{print $$2}'. Dans ce cas, `$$2` deviendra réellement `$2` lors de l'exécution de la commande.|

::: noteimportant
Les références positionnelles avec le signe $ sont recherchées
et remplacées par l'agent Zabbix uniquement pour les paramètres utilisateur flexibles. Pour
les paramètres utilisateur simples, ce traitement des références est ignoré et,
par conséquent, aucune échappement du signe $ n'est nécessaire.
:::

::: noteimportant
Certains caractères ne sont pas autorisés par défaut dans les paramètres utilisateur.
Pour la liste complète des caractères, voir [UnsafeUserParameters](/manual/appendix/config/zabbix_agentd#unsafeuserparameters).
:::

[comment]: # ({/64b08883-e619711f})

[comment]: # ({5c6e8e3c-5c6e8e3c})
##### Exemple 1

Quelque chose de très simple :

    UserParameter=ping[*],echo $1

Nous pouvons définir un nombre illimité d'éléments pour la surveillance
de tous les formats ping\[quelque chose\].

-   ping\[0\] - retournera toujours '0'
-   ping\[aaa\] - retournera toujours 'aaa'

[comment]: # ({/5c6e8e3c-5c6e8e3c})

[comment]: # ({db2a6e16-db2a6e16})
##### Exemple 2

Ajoutons un peu de sens !

    UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive

Ce paramètre peut être utilisé pour superviser la disponibilité de la base de données MySQL. Nous pouvons passer le nom d'utilisateur et le mot de passe :

    mysql.ping[zabbix,our_password]

[comment]: # ({/db2a6e16-db2a6e16})

[comment]: # ({dd3ac3fa-dd3ac3fa})
##### Exemple 3

Combien de lignes correspondent à une expression régulière dans un fichier ?

    UserParameter=wc[*],grep -c "$2" $1

Ce paramètre peut être utilisé pour calculer le nombre de ligne dans un fichier.

    wc[/etc/passwd,root]
    wc[/etc/services,zabbix]

[comment]: # ({/dd3ac3fa-dd3ac3fa})

[comment]: # ({f7cfa576-a5d86054})
#### Résultat de la commande

La valeur de retour de la commande est la sortie standard ainsi que la sortie d'erreur standard produites par la commande.

::: noteimportant
Un élément qui renvoie du texte (caractère, journal ou type d'information texte) ne deviendra pas non pris en charge en cas de sortie d'erreur standard.
:::

La valeur de retour est limitée à 16 Mo (y compris les espaces blancs de fin qui sont tronqués) ; les [limites de la base de données](/manual/config/items/item#text-data-limits) s'appliquent également.

Les paramètres utilisateur qui renvoient du texte (caractère, journal ou type d'information texte) peuvent également renvoyer un espace blanc.
En cas de résultat invalide, l'élément deviendra non pris en charge.

[comment]: # ({/f7cfa576-a5d86054})
