[comment]: # ({70a6015a-70a6015a})
# 5 Parametry użytkownika

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

[comment]: # ({a2e89be7-9a4b2756})
#### Przegląd

Czasami możesz chcieć uruchomić sprawdzenie agenta, które nie jest
wstępnie zdefiniowane w Zabbix. W takich przypadkach pomocne są parametry użytkownika.

Możesz napisać polecenie, które pobiera potrzebne dane, i uwzględnić je
w parametrze użytkownika w [pliku konfiguracji
agenta](/manual/appendix/config/zabbix_agentd) (parametr konfiguracji 'UserParameter').

Parametr użytkownika ma następującą składnię:

    UserParameter=<key>,<command>

Jak widać, parametr użytkownika zawiera również klucz. Klucz będzie
potrzebny podczas konfigurowania pozycji. Wprowadź wybrany przez siebie klucz, do którego
łatwo będzie się odwołać (musi być unikalny w obrębie hosta).

Uruchom ponownie agent lub użyj opcji [kontroli w czasie
wykonywania agenta](/manual/concepts/agent#runtime-control), aby wczytać
nowy parametr, np.:

    zabbix_agentd -R userparameter_reload

Następnie podczas [konfigurowania pozycji](/manual/config/items/item) wprowadź klucz, aby odwołać się do
polecenia z parametru użytkownika, które ma zostać wykonane.

Parametry użytkownika to polecenia wykonywane przez agent Zabbix.
Należy pamiętać, że przed etapami [wstępnego przetwarzania wartości pozycji](/manual/config/items/preprocessing) może zostać zwrócone do 16 MB danych.

W systemach operacyjnych UNIX jako interpreter wiersza poleceń używany jest **/bin/sh**.
Parametry użytkownika podlegają limitowi czasu sprawdzenia agenta; jeśli limit czasu zostanie osiągnięty, rozwidlony proces parametru użytkownika zostanie zakończony.

Zobacz także:

-   [Samouczek krok po
    kroku](/manual/config/items/userparameters/extending_agent) dotyczący
    korzystania z parametrów użytkownika
-   [Wykonywanie poleceń](/manual/appendix/command_execution)

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

[comment]: # ({53dfad45-53dfad45})
##### Przykłady prostych parametrów użytkownika

Proste polecenie:

    UserParameter=ping,echo 1

agent będzie zawsze zwracał '1' dla pozycji z kluczem 'ping'.

Bardziej złożony przykład:

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

agent zwróci '1', jeśli serwer MySQL działa, w przeciwnym razie '0'.

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

[comment]: # ({64b08883-e619711f})
#### Elastyczne parametry użytkownika

Elastyczne parametry użytkownika akceptują parametry wraz z kluczem. Dzięki temu
elastyczny parametr użytkownika może stanowić podstawę do utworzenia kilku pozycji.

Elastyczne parametry użytkownika mają następującą składnię:

    UserParameter=key[*],command

|Parametr|Opis|
|--|--------|
|**Key**|Unikalny klucz pozycji. \[\*\] określa, że ten klucz akceptuje parametry w nawiasach kwadratowych.<br>Parametry są podawane podczas konfigurowania pozycji.|
|**Command**|Polecenie, które ma zostać wykonane w celu obliczenia wartości klucza.<br>*Tylko dla elastycznych parametrów użytkownika*:<br>W poleceniu można używać odwołań pozycyjnych $1…$9, aby odwołać się do odpowiedniego parametru w kluczu pozycji.<br>Zabbix analizuje parametry ujęte w \[ \] klucza pozycji i odpowiednio podstawia $1,...,$9 w poleceniu.<br>$0 zostanie zastąpione oryginalnym poleceniem (przed rozwinięciem $0,...,$9), które ma zostać uruchomione.<br>Odwołania pozycyjne są interpretowane niezależnie od tego, czy są ujęte w podwójne (") czy pojedyncze (') cudzysłowy.<br>Aby użyć odwołań pozycyjnych bez zmian, należy podać podwójny znak dolara — na przykład awk '{print $$2}'. W takim przypadku `$$2` podczas wykonywania polecenia faktycznie zostanie zamienione na `$2`.|

::: noteimportant
Odwołania pozycyjne ze znakiem $ są wyszukiwane
i zastępowane przez Zabbix agent tylko dla elastycznych parametrów użytkownika. Dla
prostych parametrów użytkownika takie przetwarzanie odwołań jest pomijane i
dlatego żadne cytowanie znaku $ nie jest konieczne.
:::

::: noteimportant
Niektóre znaki domyślnie nie są dozwolone w parametrach użytkownika.
Pełną listę znaków można znaleźć w [UnsafeUserParameters](/manual/appendix/config/zabbix_agentd#unsafeuserparameters).
:::

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

[comment]: # ({5c6e8e3c-5c6e8e3c})
##### Przykład 1

Coś bardzo prostego:

    UserParameter=ping[*],echo $1

Możemy zdefiniować nieograniczoną liczbę pozycji do monitorowania, wszystkie w formacie
ping\[coś\].

-   ping\[0\] - zawsze zwróci '0'
-   ping\[aaa\] - zawsze zwróci 'aaa'

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

[comment]: # ({db2a6e16-db2a6e16})
##### Przykład 2

Dodajmy więcej sensu!

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

Ten parametr może być używany do monitorowania dostępności bazy danych MySQL. Możemy przekazać nazwę użytkownika i hasło:

    mysql.ping[zabbix,our_password]

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

[comment]: # ({dd3ac3fa-dd3ac3fa})
##### Przykład 3

Ile linii w pliku pasuje do wyrażenia regularnego?

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

Ten parametr może być używany do obliczania liczby linii w pliku.

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

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

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

Wartość zwracana przez polecenie to standardowe wyjście wraz ze standardowym wyjściem błędów wygenerowanym przez polecenie.

::: noteimportant
Pozycja, która zwraca tekst (informacje typu character, log lub text), nie stanie się nieobsługiwana w przypadku standardowego wyjścia błędów.
:::

Wartość zwracana jest ograniczona do 16 MB (w tym końcowe białe znaki, które są obcinane); obowiązują również [limity bazy danych](/manual/config/items/item#text-data-limits).

Parametry użytkownika, które zwracają tekst (informacje typu character, log lub text), mogą również zwracać biały znak.
W przypadku nieprawidłowego wyniku pozycja stanie się nieobsługiwana.

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