Áú»¢¶Ä²©

This is a translation of the original English documentation page. Help us make it better.

3 Macros utilisateur avec contexte

Aper?u

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 :

{$MACRO:"static text"}

ou une expression r¨¦guli¨¨re :

{$MACRO:regex:"regular expression"} 

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/.

Cas d'usage

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 :

  • {$LOW_SPACE_LIMIT} = 10
  • {$LOW_SPACE_LIMIT:/home} = 20
  • {$LOW_SPACE_LIMIT:regex:"^\/[a-z]+$"} = 30

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¨¦ :

last(/host/vfs.fs.size[{#FSNAME},pfree])<{$LOW_SPACE_LIMIT:"{#FSNAME}"}

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 :

  • le dossier /home a moins de 20 % d'espace disque libre
  • les dossiers qui correspondent au mod¨¨le d'expression r¨¦guli¨¨re (comme /etc, /tmp ou /var) ont moins de 30 % d'espace disque libre
  • les dossiers qui ne correspondent pas au mod¨¨le d'expression r¨¦guli¨¨re et qui ne sont pas /home ont moins de 10 % d'espace disque libre

Notes importantes

  • S'il existe plusieurs macros utilisateur avec contexte, Áú»¢¶Ä²© essaiera d'abord de faire correspondre les macros de contexte simples, puis les macros de contexte avec des expressions r¨¦guli¨¨res dans un ordre ind¨¦fini.

Ne cr¨¦ez pas de macros de contexte diff¨¦rentes correspondant ¨¤ la m¨ºme cha?ne pour ¨¦viter un comportement ind¨¦fini.

  • Si une macro avec son contexte n'est pas trouv¨¦e sur l'h?te, sur les mod¨¨les li¨¦s ou globalement, la macro sans contexte est recherch¨¦e.
  • Seules les macros de d¨¦couverte de bas niveau sont prises en charge dans le contexte. Toutes les autres macros sont ignor¨¦es et trait¨¦es comme du texte brut.

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 , :

  • Le contexte de la macro doit ¨ºtre entre guillemets avec " 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 \.
  • 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 espaces de d¨¦but dans le contexte sont ignor¨¦s, les espaces de fin ne le sont pas :
    • Par exemple {$MACRO:A} est identique ¨¤ {$MACRO: A}, mais pas ¨¤ {$MACRO:A }.
  • Tous les espaces avant les guillemets de d¨¦but et apr¨¨s les guillemets de fin sont ignor¨¦s, mais tous les espaces ¨¤ l'int¨¦rieur des guillemets ne le sont pas :
    • Les macros {$MACRO:"A"}, {$MACRO: "A"}, {$MACRO:"A" } et {$MACRO: "A" } sont identiques, mais les macros {$MACRO:"A"} et {$MACRO:" A "} ne le sont pas.

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¨¦.