zabbix-agent-addons/zabbix_scripts/disco_block_devices

40 lines
938 B
Perl

#!/usr/bin/perl -w
use warnings;
use strict;
use Zabbix::Agent::Addons::Disks;
use JSON;
use File::Which;
use Getopt::Long;
my $pretty = 0;
GetOptions(
'pretty' => \$pretty
);
my $lsblk = which('lsblk');
my $json;
@{$json->{data}} = ();
if (defined $lsblk){
foreach my $line (qx($lsblk -o KNAME,TYPE,SIZE -r -n -b)){
my ($block,$type,$size) = split(/\s+/, $line);
push @{$json->{data}}, {
"{#BLOCKDEVICE}" => $block, # Compat with previous zabbix-agent-addons
"{#DEVNAME}" => $block, # New macro name for the native vfs.dev.discovery key in 4.4
"{#DEVTYPE}" => $type,
};
}
} else {
# Fallback if lsblk is not available
foreach my $block (Zabbix::Agent::Addons::Disks::list_block_dev()){
push @{$json->{data}}, {
"{#BLOCKDEVICE}" => $block,
"{#DEVNAME}" => $block,
"{#DEVTYPE}" => 'disk'
};
}
}
print to_json($json, { pretty => $pretty });
exit(0);