#3 Gebruikersmacro's met context
Een optionele context kan worden gebruikt in gebruikersmacros, waardoor de standaardwaarde kan worden overschreven door een contextspecifieke waarde.
De context wordt toegevoegd aan de macronaam; de syntaxis hangt af van of de context een statische tekstwaarde is:
of een reguliere expressie:
Merk op dat een macro met een context van reguliere expressie alleen kan worden gedefinieerd in de gebruikersmacronconfiguratie. Als het voorvoegsel regex:
elders wordt gebruikt als context voor gebruikersmacro, bijvoorbeeld in een triggerevaluatie, wordt het behandeld als een statische context.
Het aanhalingsteken voor de context is optioneel (zie ook belangrijke opmerkingen).
Voorbeelden van macrocontext:
Voorbeeld | Beschrijving |
---|---|
{$LOW_SPACE_LIMIT} |
Gebruikersmacro zonder context. |
{$LOW_SPACE_LIMIT:/tmp} |
Gebruikersmacro met context (statische string). |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
Gebruikersmacro met context (reguliere expressie). Hetzelfde als {$LOW_SPACE_LIMIT:/tmp} . |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
Gebruikersmacro met context (reguliere expressie). Komt overeen met alle strings die beginnen met /var/log/. |
Gebruikersmacro's met context kunnen worden gedefinieerd om flexibelere drempelwaarden in triggerevaluaties te bereiken (gebaseerd op de waarden die zijn opgehaald door laagniveaudetectie). Bijvoorbeeld, u kunt de volgende macro's definiëren:
Vervolgens kan een macro voor laagniveaudetectie worden gebruikt als macrocontext in een triggervoorbeeld voor de detectie van gemonteerde bestandssystemen:
Na de detectie zullen verschillende lage-diskruimte-drempels van toepassing zijn in triggerevaluaties, afhankelijk van de gedetecteerde koppelingspunten of bestandssysteemtypes. Probleemgebeurtenissen worden gegenereerd als:
Maak geen verschillende contextmacro's die overeenkomen met dezelfde tekenreeks om ongedefinieerd gedrag te voorkomen.
Technisch gezien wordt macrocontext gespecificeerd met behulp van regels die vergelijkbaar zijn met item sleutelparameters, behalve dat macrocontext niet wordt geparseerd als meerdere parameters als er een ,
-teken aanwezig is:
"
) worden geplaatst als de context het teken }
bevat of begint met een teken "
. Aanhalingstekens binnen de geciteerde context moeten worden voorafgegaan door het teken \
.\
zelf wordt niet ontsnapt, wat betekent dat het onmogelijk is om een geciteerde context te hebben die eindigt met het teken \
. De macro {$MACRO:"a:\b\c\"} is ongeldig.De volgende macro's zijn allemaal gelijkwaardig omdat ze dezelfde context hebben: {$MACRO:A}, {$MACRO: A} en {$MACRO:"A"}. Dit in tegenstelling tot item sleutels, waarbij 'sleutel[a]', 'sleutel[ a]' en 'sleutel["a"]' semantisch hetzelfde zijn, maar verschillend zijn voor doeleinden van uniciteit.