Additional scripts for Zabbix agent on Linux to discover and monitor several services
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
1.2 KiB

#!/usr/bin/perl
use lib "/usr/share/BackupPC/lib";
use BackupPC::Lib;
use BackupPC::CGI::Lib;
use POSIX;
use JSON;
use Getopt::Long;
use MIME::Base64 qw( decode_base64 );
my $regex = '.*';
my $base64 = 0;
GetOptions(
"regex=s" => \$regex,
"base64" => \$base64
);
$regex = decode_base64($regex) if ($base64);
$regex = qr($regex);
# We need to switch to backuppc UID/GID
my $uid = getuid();
my $gid = getgid();
my (undef,undef,$bkpuid,$bkpgid) = getpwnam('backuppc');
setuid($bkpuid) if ($uid ne $bkpuid);
setgid($bkpgid) if ($gid ne $bkpgid);
my $bpc = BackupPC::Lib->new();
my $hosts = $bpc->HostInfoRead();
my $mainConf = $bpc->ConfigDataRead();
my $json;
foreach my $host (keys %$hosts){
next unless ($host =~ m!$regex!);
my $hostConf = $bpc->ConfigDataRead($host);
my $conf = { %$mainConf, %$hostConf };
my $period = ($conf->{FullPeriod} >= $conf->{IncrPeriod}) ? $conf->{IncrPeriod} : $conf->{FullPeriod};
my $status = ($conf->{BackupsDisable} eq 1) ? 'disabled':'enabled';
push @{$json->{data}},
{
"{#BPCHOST}" => $host,
"{#BPCPERIOD}" => $period,
"{#BPCSTATUS}" => $status,
};
}
print to_json($json);
exit(0);