I created this script to add host/host group by Zabbix API.
#!/bin/bash set -x ### config user_name=user01 user_pass=pass_string zabbix_url=http://localhost/zabbix/api_jsonrpc.php header="Content-Type: application/json-rpc" # ------------------------------------------ # set token # ------------------------------------------ function set_token() { local json_data=$(cat << EOS { "jsonrpc": "2.0", "method": "user.login", "params": { "user": "${user_name}", "password": "${user_pass}" }, "id": 1, "auth": null } EOS ) token=`curl -s -H "${header}" ${zabbix_url} -d "${json_data}" | jq -r .result` } # ------------------------------------------ # get host # ------------------------------------------ function get_host() { json_data=$(cat << EOS { "jsonrpc": "2.0", "method": "host.get", "params": { "output": [ "hostid", "host" ], "selectInterfaces": [ "interfaceid", "ip" ] }, "id": 2, "auth": "${token}" } EOS ) result=`curl -s -d ${json_data} -H "${header}" ${zabbix_url} | jq -r .result` } # ------------------------------------------ # add host group # $1 - host group name # ------------------------------------------ function add_host_group() { local json_data=$(cat << EOS { "jsonrpc": "2.0", "method": "hostgroup.create", "params": { "name": "$1" }, "auth": "${token}", "id": 3 } EOS ) # echo "${json_data}" ret_value=`curl -s -H "${header}" ${zabbix_url} -d "${json_data}" | jq -r .result.groupids[0]` } # ------------------------------------------ # get host group # $1 - host group name # ------------------------------------------ function get_host_group() { local json_data=$(cat << EOS { "jsonrpc": "2.0", "method": "hostgroup.get", "params": { "output": "extend", "filter": { "name": [ "$1" ] } }, "auth": "${token}", "id": 4 } EOS ) # echo "${json_data}" ret_value=`curl -s -H "${header}" ${zabbix_url} -d "${json_data}" | jq -r .result[0].groupid` echo $ret_value } # ------------------------------------------ # add host # $1 - host name # $2 - host group id # $3 - ip # ------------------------------------------ function add_host() { local json_data=$(cat << EOS { "jsonrpc": "2.0", "method": "host.create", "params": { "host": "$1", "interfaces": [ { "type": 1, "main": 1, "useip": 1, "ip": "$3", "dns": "", "port": "10050" } ], "groups": [ { "groupid": "$2" } ], "templates": [ { "templateid": "10001" } ] }, "auth": "${token}", "id": 5 } EOS ) # echo "${json_data}" ret_value=`curl -s -H "${header}" ${zabbix_url} -d "${json_data}" | jq .result` echo $ret_value } # ------------------------------------------ # MAIN # ------------------------------------------ set_token echo $token # add group group_name="test group33" get_host_group "${group_name}" if [ "null" = "${ret_value}" ]; then # add host group add_host_group "${group_name}" group_id=${ret_value} else # already added group_id=${ret_value} fi echo ${group_id} # add host host_name="test_host1" ip_address="192.168.100.10" add_host "${host_name}" "${group_id}" "${ip_address}"