Better compat with 4.4 vfs.dev.discovery (and use lsblk to get the list of dev if available)

tags/zabbix-agent-addons-0.2.92-1
Daniel Berteaud 4 years ago
parent db939d3e92
commit e30dcda6da
  1. 36
      zabbix_scripts/disco_block_devices

@ -4,18 +4,36 @@ 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}} = ();
foreach my $block (Zabbix::Agent::Addons::Disks::list_block_dev()){
my $size = 1;
if ( -e "/sys/block/$block/size"){
open SIZE, "/sys/block/$block/size";
$size = join "", <SIZE>;
close SIZE;
chomp($size);
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'
};
}
push @{$json->{data}}, { "{#BLOCKDEVICE}" => $block, "{#BLOCKSIZE}" => $size, "{#DEVNAME}" => $block };
}
print to_json($json);
print to_json($json, { pretty => $pretty });
exit(0);

Loading…
Cancel
Save