Un contexte facultatif peut être utilisé dans les macros utilisateur, permettant de remplacer la valeur par défaut par une valeur spécifique au contexte.
Le contexte est ajouté au nom de la macro ; la syntaxe varie selon que le contexte est une valeur de texte statique :
ou une expression régulière :
Notez qu'une macro avec un contexte d'expression régulière ne peut être définie que dans la configuration de la macro utilisateur. Si le préfixe regex:
est utilisé ailleurs comme contexte de macro utilisateur, comme dans une expression de déclencheur, il sera traité comme un contexte statique.
La citation contextuelle est facultative (voir aussi notes importantes).
Exemples de contexte de macro :
Exemple | Description |
---|---|
{$LOW_SPACE_LIMIT} |
Macro utilisateur sans contexte. |
{$LOW_SPACE_LIMIT:/tmp} |
Macro utilisateur avec contexte (chaîne statique). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Macro utilisateur avec contexte (expression régulière). Identique à {$LOW_SPACE_LIMIT:/tmp} . |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Macro utilisateur avec contexte (expression régulière). Correspond à toutes les chaînes préfixées par /var/log/. |
Des macros utilisateur avec contexte peuvent être définies pour atteindre des seuils plus flexibles dans les expressions de déclenchement (basées sur les valeurs récupérées par la découverte de bas niveau). Par exemple, vous pouvez définir les macros suivantes :
Ensuite, une macro de découverte de bas niveau peut être utilisée comme contexte de macro dans un prototype de déclencheur pour la découverte du système de fichiers monté :
Après la découverte, différents seuils d'espace réduit s'appliqueront dans les déclencheurs en fonction des points de montage ou des types de système de fichiers découverts. Des événements de problème seront générés si :
Ne créez pas de macros de contexte différentes correspondant à la même chaîne pour éviter un comportement indéfini.
Techniquement, le contexte de la macro est spécifié à l'aide de règles similaires aux paramètres de la clé d'élément, sauf que le contexte de la macro n'est pas analysé comme plusieurs paramètres s'il y a un caractère ,
:
"
si le contexte contient un caractère }
ou commence par un caractère "
. Les guillemets à l'intérieur du contexte entre guillemets doivent être échappés avec le caractère \
.\
lui-même n'est pas échappé, ce qui signifie qu'il est impossible d'avoir un contexte entre guillemets se terminant par le caractère \
- la macro {$MACRO:"a:\b\c\"} est invalide.Les macros suivantes sont toutes équivalentes, car elles ont le même contexte : {$MACRO:A}, {$MACRO:A} et {$MACRO:"A"}. Cela contraste avec les clés d'élément, où 'key[a]', 'key[ a]' et 'key["a"]' sont sémantiquement identiques, mais différents à des fins d'unicité.