Este mam predsa len jeden dotaz:
mam nasledovny skript:#Human readable format of partition's and memory size
def convert_size(size_bytes):
if size_bytes == 0:
return "0B"
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
i = int(math.floor(math.log(size_bytes, 1024)))
power = math.pow(1024, i)
size = round(size_bytes / power, 2)
return "{} {}".format(size, size_name[i])
#Collect all values of available partitions:
def disk_sizes():
for itd in zapi.item.get(output="extend",hostids=(hlist['hostid']),searchWildcardsEnabled="true",search={"name":"*Total disk space*" }):
for itdval in zapi.history.get(output="extend",hostids=(hlist['hostid']),itemids=(itd['itemid']),limit="1"):
var_disk_size = int(itdval['value'])
dict[itd['name']] = (convert_size(var_disk_size))
#Collect RAM size:
def ram_size():
for itm in zapi.item.get(output="extend",hostids=(hlist['hostid']),searchWildcardsEnabled="true",search={"name":"*Total memory*" }):
for mmval in zapi.history.get(output="extend",hostids=(hlist['hostid']),itemids=(itm['itemid']),limit="1"):
var_memory_size = int(mmval['value'])
dict[itm['name']] = (convert_size(var_memory_size))
#Query:
for hlist in zapi.host.get(output=["hostid","name","host"],limit="15"):
dict = (hlist)
disk_sizes()
ram_size()
data_json = json.dumps(dict, indent = 4, sort_keys = True)
print(data_json)
Ktoreho vystup je
{
"Total disk space on /": "45.59 GB",
"Total disk space on /boot": "496.67 MB",
"Total memory": "3.7 GB",
"host": "mailgw.domain.sk",
"hostid": "10284",
"name": "ems01.domain.sk"
}
{
"Total disk space on /": "75.44 GB",
"Total disk space on /boot": "496.67 MB",
"Total memory": "3.7 GB",
"host": "zbx-prx1.domain.sk",
"hostid": "10285",
"name": "zbx-prx1.domain.sk"
}
{
"host": "Commet.web.sensor.1",
"hostid": "10286",
"name": "ServerRoom sensor EIN1"
}
{
"host": "firewall01",
"hostid": "10287",
"name": "prvy-firewall - Cisco ASA"
}
Ako dosiahnut, aby vystupom bolo nieco takeho:
{
"Basic Info": {
"host": "zbx-prx1.domain.sk",
"hostid": "10285",
"name": "zbx-prx1.domain.sk"
},
"Technical info": {
"Total disk space on /": "75.44 GB",
"Total disk space on /boot": "496.67 MB",
"Total memory": "3.7 GB"
}
}
{
"Basic Info": {
"host": "firewall01",
"hostid": "10287",
"name": "prvy-firewall - Cisco ASA"
},
"Technical info": {
}
}
Ciel som si dal sam, myselel som si ze to hravo zvladnem, ale dnes cely den, som nad tym sedel a nepodarilo sa mi dosiahnut zelaneho stavu. Bud mi to zhavaruje na tom, ze niektore hosty nemaju napriklad niektory key ked sa to pokusam spravit cestou:
final_dict = {'Basic Info': {'HostID':(dict['hostid']),'Name':(dict['host']),'Visible Name':(dict['name'])},'Technical info':{'Total memory RAM':(dict['Total memory'])}}
data_json = json.dumps(dict, indent = 4, sort_keys = True)
S najvacsou pravdepodobnostou som nespravne pochopil ako funguju dict a ako z nich spravit json v uvedenom pripade.