[comment]: # translation:outdated

[comment]: # aside:3

[comment]: # ({d1748010-ebcec779})
# Zabbix API izmantošana

[zabbix\_utils](https://github.com/zabbix/python-zabbix-utils/blob/main/README.md) ļauj izmantot [Zabbix API](/manual/api), lai pārvaldītu Zabbix objektus, tostarp izveidotu hostus, atjauninātu vienumus, izgūtu notikumus un veiktu citas darbības.

API pieprasījumus var veikt sinhronajā vai asinhronajā režīmā:

-   Sinhronajā režīmā jūsu Python skripts nosūta pieprasījumu un pirms turpināšanas gaida atbildi, kas ir piemēroti vienkāršām, secīgām un paredzamām darbībām.
-   Asinhronajā režīmā skripts nosūta pieprasījumus, negaidot katru atbildi, ļaujot citām darbībām turpināties paralēli; tas ir efektīvāk lēniem pieprasījumiem vai lielām datu paketēm.

Šīs lapas piemēri ir vērsti uz sinhrono režīmu, lai gan [asinhronais režīms](#asynchronous-mode) izmanto līdzīgus principus.
Papildu piemēri ir pieejami GitHub repozitorijā [zabbix_utils](https://github.com/zabbix/python-zabbix-utils/tree/main/examples).

[comment]: # ({/d1748010-ebcec779})

[comment]: # ({3d27f26b-8304e91c})
#### Importēšana

Lai izmantotu zabbix\_utils darbam ar Zabbix API, importējiet `ZabbixAPI` klasi savā skriptā:

```python
from zabbix_utils import ZabbixAPI
```

::: noteclassic
Ja jau izmantojat [kopienas Python bibliotēku](https://www.zabbix.com/integrations/python), parasti varat aizstāt šo importu ar `ZabbixAPI` no zabbix\_utils.
:::

[comment]: # ({/3d27f26b-8304e91c})

[comment]: # ({55f43c13-2fe24fc5})
#### Pieteikšanās

Pirms API pieprasījumu veikšanas jums jāizveido `ZabbixAPI` instance un jāpiesakās Zabbix API.

Izvēlieties metodi, kas vislabāk atbilst tam, kā pārvaldāt akreditācijas datus.
Varat izmantot savu lietotājvārdu un paroli vai [API tokenus](/manual/web_interface/frontend_sections/users/api_tokens).

[comment]: # ({/55f43c13-2fe24fc5})

[comment]: # ({eecbd507-f5ed9f85})
##### Inicializācijas laikā

Veidojot `ZabbixAPI` instanci, varat uzreiz norādīt Zabbix tīmekļa saskarnes URL un savus akreditācijas datus:

```python
# Lietotājvārds un parole:
api = ZabbixAPI(url="127.0.0.1/zabbix", user="Admin", password="zabbix")

# API marķieris:
api = ZabbixAPI(url="127.0.0.1/zabbix", token="your_api_token")
```

Ja vēlaties grupēt savienojuma parametrus, varat tos nodot kā Python vārdnīcu un izpakot, izmantojot Python atslēgvārdu argumentu sintaksi:

```python
ZABBIX_AUTH = {
    "url": "127.0.0.1/zabbix",
    "user": "Admin",
    "password": "zabbix"
}

api = ZabbixAPI(**ZABBIX_AUTH)
```

[comment]: # ({/eecbd507-f5ed9f85})

[comment]: # ({5cb46e5e-3bf35a85})
##### `login()` izmantošana

Vispirms varat izveidot `ZabbixAPI` instanci, norādot tikai Zabbix tīmekļa saskarnes URL, un vēlāk izmantot `login()` metodi ar saviem akreditācijas datiem:

```python
# Lietotājvārds un parole:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")

# API marķieris:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(token="your_api_token")
```

[comment]: # ({/5cb46e5e-3bf35a85})

[comment]: # ({ff280370-a8fe2b33})
##### Vides mainīgo izmantošana

Vispirms varat saglabāt savus akreditācijas datus kā vides mainīgos, piemēram, izmantojot termināli:

```bash
# Lietotājvārds un parole:
export ZABBIX_USER="Admin"
export ZABBIX_PASSWORD="zabbix"

# Token:
export ZABBIX_TOKEN="your_api_token"
```

Pēc tam, ja palaižat savu skriptu no tās pašas termināļa sesijas, skriptā esošajai `ZabbixAPI` instancei ir nepieciešams tikai Zabbix tīmekļa lietotāja saskarnes URL:

```python
api = ZabbixAPI(url="127.0.0.1/zabbix")
```

URL varat arī saglabāt vides mainīgajā:

```bash
# Lietotājvārds un parole:
export ZABBIX_USER="Admin"
export ZABBIX_PASSWORD="zabbix"
export ZABBIX_URL="https://127.0.0.1/zabbix"

# Token:
export ZABBIX_TOKEN="your_api_token"
export ZABBIX_URL="https://127.0.0.1/zabbix"
```

Ja URL un akreditācijas dati visi ir iestatīti kā vides mainīgie, skriptā esošajai `ZabbixAPI` instancei vispār nav nepieciešami nekādi argumenti:

```python
api = ZabbixAPI()
```

[comment]: # ({/ff280370-a8fe2b33})

[comment]: # ({b539ed93-326ac077})
#### Izrakstīšanās

Ja pieteicāties, izmantojot lietotājvārdu un paroli, pēc API darbību pabeigšanas izsauciet `logout()` metodi:

```python
from zabbix_utils import ZabbixAPI

api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")

# API actions go here

api.logout()
```

::: noteclassic
Izsaukt `logout()` metodi nav nepieciešams, ja izmantojat API tokenus.
:::

[comment]: # ({/b539ed93-326ac077})

[comment]: # ({a94d5334-e970d222})
#### API pieprasījumi

Pēc pieteikšanās jūs varat veikt jebkurus API pieprasījumus, izsaucot metodes, kas aprakstītas Zabbix API [metožu atsaucē](/manual/api/reference).

API metodes tiek izsauktas, izmantojot šādu formātu:

```python
api_instance.zabbix_object.method(parameters)
```

::: noteclassic
Dažu Zabbix API metožu vai objektu nosaukumos tiek izmantoti vārdi, kas Python ir rezervēti atslēgvārdi (piemēram, `import`).
Lai izvairītos no Python kļūdām, pievienojiet pasvītrojuma zīmi metodes vai objekta nosaukumam, kad to izmantojat Python (piemēram, `api.configuration.import_`).
:::

Piemēram, lai skatītu hostu sarakstu ar [`host.get`](/manual/api/reference/host/get):

```python
# 1. Importējiet ZabbixAPI no zabbix_utils:
from zabbix_utils import ZabbixAPI

# 2. Izveidojiet ZabbixAPI instanci un piesakieties:
api = ZabbixAPI(url="127.0.0.1/zabbix")
api.login(user="Admin", password="zabbix")

# 3. Iegūstiet filtram atbilstošos hostus:
hosts = api.host.get(
    filter={
        "host": [
            "Zabbix server",
            "Linux server"
        ]
    }
)

# 4. Iterējiet cauri atgrieztajiem hostiem un izdrukājiet katra hosta informāciju:
for host in hosts:
    print(host)

# 5. Izrakstieties no API, lai aizvērtu sesiju:
api.logout()
```

[comment]: # ({/a94d5334-e970d222})

[comment]: # ({7b3e3f97-0e327592})
##### Asinhronais režīms

Asinhronais režīms ļauj jūsu skriptam sūtīt API pieprasījumus, negaidot, līdz katrs no tiem tiks pabeigts.
Tas var padarīt jūsu skriptu efektīvāku, ja tam jāizpilda daudzi API pieprasījumi vai ja dažu pieprasījumu izpilde aizņem ilgu laiku.

Izmantojot asinhrono režīmu, salīdzinājumā ar sinhrono režīmu ir vairākas būtiskas atšķirības:

-   Importējiet Python `asyncio` moduli (vispirms jā[instalē](/devel/python/install) nepieciešamās atkarības).
-   Importējiet `AsyncZabbixAPI` `ZabbixAPI` vietā.
-   Rakstiet savu kodu `async` funkcijā.
-   Izmantojiet `await`, izsaucot API metodes, tostarp `login()` un `logout()`.

::: noteimportant
Veidojot `AsyncZabbixAPI` instanci, jūs nevarat pieteikties [inicializācijas laikā](#during-initialization).
:::

Piemēram, lai asinhronajā režīmā skatītu hostu sarakstu ar [`host.get`](/manual/api/reference/host/get):

```python
# 1. Import asyncio for asynchronous mode, and AsyncZabbixAPI from zabbix_utils:
import asyncio
from zabbix_utils import AsyncZabbixAPI

# 2. Define the main async function where all API operations will run:
async def main():

    # 3. Create an AsyncZabbixAPI instance and log in (must await):
    api = AsyncZabbixAPI(url="127.0.0.1")
    await api.login(user="User", password="zabbix")

    # 4. Retrieve hosts matching a filter (must await):
    hosts = await api.host.get(
        filter={
            "host": [
                "Zabbix server",
                "Linux server"
            ]
        }
    )

    # 5. Iterate over returned hosts and print each host's details:
    for host in hosts:
        print(host)

    # 6. Log out from the API to close the session (must await):
    await api.logout()

# 7. Run the async main() function using asyncio's event loop:
asyncio.run(main())
```

[comment]: # ({/7b3e3f97-0e327592})

[comment]: # ({57854c72-5dc3bb95})
#### Piemēri

Tālāk sniegtie piemēri parāda biežāk sastopamos Zabbix API uzdevumus, izmantojot `zabbix_utils` bibliotēku.

Papildu piemēri ir pieejami GitHub repozitorija [zabbix_utils](https://github.com/zabbix/python-zabbix-utils) `examples` direktorijā.

[comment]: # ({/57854c72-5dc3bb95})
