[comment]: # ({70a6015a-70a6015a})
# 5 Parametri utente

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

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

A volte potresti voler eseguire un controllo agent che non è predefinito in Zabbix. In questo caso, i parametri utente vengono in aiuto.

Puoi scrivere un comando che recuperi i dati necessari e includerlo nel parametro utente nel [file di configurazione dell'agent](/manual/appendix/config/zabbix_agentd) (parametro di configurazione 'UserParameter').

Un parametro utente ha la seguente sintassi:

    UserParameter=<key>,<command>

Come puoi vedere, un parametro utente contiene anche una chiave. La chiave sarà necessaria durante la configurazione di un item. Inserisci una chiave a tua scelta che sia facile da richiamare (deve essere univoca all'interno di un host).

Riavvia l'agent oppure usa l'opzione di [controllo runtime dell'agent](/manual/concepts/agent#runtime-control) per rendere effettivo il nuovo parametro, ad esempio:

    zabbix_agentd -R userparameter_reload

Quindi, durante la [configurazione di un item](/manual/config/items/item), inserisci la chiave per fare riferimento al comando del parametro utente che desideri eseguire.

I parametri utente sono comandi eseguiti da Zabbix agent.
Tieni presente che possono essere restituiti fino a 16 MB di dati prima dei passaggi di [pre-elaborazione del valore dell'item](/manual/config/items/preprocessing).

**/bin/sh** viene utilizzato come interprete della riga di comando nei sistemi operativi UNIX.
I parametri utente rispettano il timeout del controllo agent; se il timeout viene raggiunto, il processo del parametro utente generato tramite fork viene terminato.

Vedi anche:

-   [Tutorial passo passo](/manual/config/items/userparameters/extending_agent) sull'utilizzo dei parametri utente
-   [Esecuzione dei comandi](/manual/appendix/command_execution)

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

[comment]: # ({53dfad45-53dfad45})
##### Esempi di parametri utente semplici

Un comando semplice:

    UserParameter=ping,echo 1

L'agent restituirà sempre '1' per un item con chiave 'ping'.

Un esempio più complesso:

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

L'agent restituirà '1' se il server MySQL è attivo, altrimenti '0'.

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

[comment]: # ({64b08883-e619711f})
#### Parametri utente flessibili

I parametri utente flessibili accettano parametri con la chiave. In questo modo, un parametro utente flessibile può costituire la base per creare diversi item.

I parametri utente flessibili hanno la seguente sintassi:

    UserParameter=key[*],command

|Parameter|Description|
|--|--------|
|**Key**|Chiave item univoca. \[\*\] definisce che questa chiave accetta parametri tra parentesi quadre.<br>I parametri vengono forniti durante la configurazione dell'item.|
|**Command**|Comando da eseguire per valutare il valore della chiave.<br>*Solo per i parametri utente flessibili*:<br>È possibile usare riferimenti posizionali $1…$9 nel comando per fare riferimento al rispettivo parametro nella chiave item.<br>Zabbix analizza i parametri racchiusi tra \[ \] della chiave item e sostituisce di conseguenza $1,...,$9 nel comando.<br>$0 verrà sostituito dal comando originale (prima dell'espansione di $0,...,$9) da eseguire.<br>I riferimenti posizionali vengono interpretati indipendentemente dal fatto che siano racchiusi tra virgolette doppie (") o singole (').<br>Per usare i riferimenti posizionali senza modificarli, specificare un doppio simbolo del dollaro: ad esempio, awk '{print $$2}'. In questo caso `$$2` diventerà effettivamente `$2` durante l'esecuzione del comando.|

::: noteimportant
I riferimenti posizionali con il simbolo $ vengono cercati
e sostituiti da Zabbix agent solo per i parametri utente flessibili. Per
i parametri utente semplici, tale elaborazione dei riferimenti viene saltata e,
pertanto, non è necessario alcun escaping del simbolo $.
:::

::: noteimportant
Alcuni caratteri non sono consentiti nei parametri utente per impostazione predefinita.
Per l'elenco completo dei caratteri, vedere [UnsafeUserParameters](/manual/appendix/config/zabbix_agentd#unsafeuserparameters).
:::

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

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

Qualcosa di molto semplice:

    UserParameter=ping[*],echo $1

Possiamo definire un numero illimitato di item per il monitoraggio, tutti con il formato
ping\[qualcosa\].

-   ping\[0\] - restituirà sempre '0'
-   ping\[aaa\] - restituirà sempre 'aaa'

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

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

Aggiungiamo più funzionalità!

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

Questo parametro può essere utilizzato per monitorare la disponibilità del database MySQL. Possiamo passare nome utente e password:

    mysql.ping[zabbix,our_password]

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

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

Quante righe corrispondono a un'espressione regolare in un file?

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

Questo parametro può essere utilizzato per calcolare il numero di righe in un file.

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

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

[comment]: # ({f7cfa576-a5d86054})
#### Risultato del comando

Il valore restituito del comando è costituito dall'output standard insieme all'output di errore standard prodotto dal comando.

::: noteimportant
Un item che restituisce testo (informazioni di tipo character, log o text) non diventerà non supportato in caso di output di errore standard.
:::

Il valore restituito è limitato a 16 MB (inclusi gli spazi finali che vengono troncati); si applicano anche i [limiti del database](/manual/config/items/item#text-data-limits).

I parametri utente che restituiscono testo (informazioni di tipo character, log o text) possono restituire anche uno spazio vuoto.
In caso di risultato non valido, l'item diventerà non supportato.

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