Package: thzabbix
thzabbixLibrary for work with zabbix api.Support Zabbix 6.0.xContains two classes - ZabbReq and HTTPtest. First do different kind of tasks in Zabbix api, second has target only Zabbix web tests.ZabbReqHTTPtestZabbReqZabbReq.req_post(req_data)- simpliest function for send requests to zabbix server, wherereq_datais dictionary in zabbix api format. All information about it you can find in api documentation.For example, print list of host' interfaces list data:from thzabbix import ZabbReq

host_ip = "XXX.XXX.XXX.XXX"
zabb_user = "apiuser"
zabb_passwd = "secret"
zabb_url = "https://zabbix.example.com/api_jsonrpc.php"

zabb_creds = dict(user=zabb_user, passwd=zabb_passwd, url=zabb_url)
ZabbReq = ZabbReq(zabb_creds)

print(ZabbReq.req_post(dict(params=dict(filter=dict(ip=host_ip)), method="hostinterface.get"))["result"])ZabbReq.hostidbyip(host_ip)- get host id by external interface ip address.host_ipis string variableZabbReq.hostipbyid(host_id)- get external interface ip address by host id.host_idis string variableZabbReq.host_tmplt_list(host_id)- get templates list (as template id), linked to host id.host_idis string variableZabbReq.host_tmplt_upd(hostid, tmplt_lst)- update templates (as template id), linked to host id.host_idis string variable,tmplt_lstis list of templates id.ZabbReq.host_tmplt_add(hostid, tmplt_id)- add template, linked to host id.host_idis string variable,tmplt_idis string variable, template id.ZabbReq.host_tmplt_del(hostid, tmplt_id)- remove template, linked to host id.host_idis string variable,tmplt_idis string variable, template id.ZabbReq.addhost(hcreatedata)- create host.hcreatedatais dict of parameters for new host.For example:from thzabbix import ZabbReq

zabb_user = "apiuser" # zabbix username, string
zabb_passwd = "secret" # zabbix user password, string
zabb_url = "https://zabbix.example.com/api_jsonrpc.php" # url of zabbix api

zabb_creds = dict(user=zabb_user, passwd=zabb_passwd, url=zabb_url)
ZabbReq = ZabbReq(zabb_creds)

hostname = "Example host"
tls_accept =  "2" # enable tls (for disable set this variable and tls_connect to "1")
tls_connect = "2" # set psk encription
tls_psk_identity = PSK KEY NAME
tls_psk = 123124324rwefdsfgdfsgsdfg546t42 #some psk key
host_ip = "XXX.XXX.XXX.XXX"

group_id = XXXXXX # group id for host
template_id = YYYYYY # template id linked to host

# groups and templates can be set as list of dictionary to add host in many groups or/and lynk many templates. 'templates' is optional parameter, osers is required

hostcreate = dict(host=hostname, 
    tls_connect=tlsconnect, 
    tls_accept=tlsaccept, 
    tls_psk_identity=psk_identity, 
    tls_psk=psk_key, 
    interfaces=[dict(type=1, main=1, useip=1, ip=host_ip, dns="", port=host_port)], 
    groups=[dict(groupid=group_id)], 
    templates=[dict(templateid=template_id)])ZabbReq.hostslist()- print hosts list with extended data.ZabbReq.hostsidlist()- print hosts id list.ZabbReq.hostdata(hostid)- print host data.HTTPtestHTTPtest.httptestdel(del_testid)- delete test by idHTTPtest.httptestadd(add_params)- add new http testFor example:from thzabbix import HTTPtest

zabb_user = "apiuser" # zabbix username, string
zabb_passwd = "secret" # zabbix user password, string
zabb_url = "https://zabbix.example.com/api_jsonrpc.php" # url of zabbix api

zabb_creds = dict(user=zabb_user, passwd=zabb_passwd, url=zabb_url)
HTTPtest = HTTPtest(zabb_creds)

test_host = "XXX.XXX.XXX.XXX" # host ip in zabbix
test_dom = "example.com" # name of http test
steps_list = list(dict(name="example.com", url="https://example.com/", status_codes="200", no=1)) # data for one step check with default parameters

print(HTTPtest.httptestadd(dict(host_ip=test_host, name=test_dom, steps=steps_list)))HTTPtest.httptestupd(upd_params)- update existence http test.upd_paramsis similar toadd_paramsinHTTPtest.httptestadd()