#!/usr/bin/perl
#
# process bacula termination message and generate zabbix events
#
use strict;
use warnings;

my %term_backup = ("OK", "0" , "OK -- with warnings", "1");
my %term_verify = ("OK", "0" );

my $zabbixserver = $ARGV[0];
my $hostname = $ARGV[1];
my $zabbix_sender = "/usr/local/bin/zabbix_sender";

#print "Server=", $zabbixserver, "\n";
#print "Host=", $hostname, "\n";

while (<STDIN>) {
    if (/Termination:\s*Backup\s*/) { 
      my $term = $'; chop($term); 
      if (exists($term_backup{$term})) {
        $term=$term_backup{$term};
      } else {
        $term="2";      
      };
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.backup.result -o ".$term;
#      print $cmd, "\n";     
      my $return = `$cmd`;
    } elsif (/Termination:\s*Verify\s*/) { 
      my $term = $'; chop($term); 
      if (exists($term_verify{$term})) {
        $term=$term_verify{$term};
      } else {
        $term="2";      
      };
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.verify.result -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/FD Files Written:\s*/) { 
      my $term = $'; chop($term);
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.fd.fileswritten -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/SD Files Written:\s*/) {
      my $term = $'; chop($term);
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.sd.fileswritten -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/FD Bytes Written:\s*/) {
      $_ = $'; /[0-9,]+/; $_ = $&; s/,//g;
      my $term = $_;
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.fd.byteswritten -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/SD Bytes Written:\s*/) {
      $_ = $'; /[0-9,]+/; $_ = $&; s/,//g;
      my $term = $_;
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.sd.byteswritten -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/Last Volume Bytes:\s*/) {
      $_ = $'; /[0-9,]+/; $_ = $&; s/,//g;
      my $term = $_;
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.lastvolumebytes -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    } elsif (/Files Examined:\s*/) {
      $_ = $'; /[0-9,]+/; $_ = $&; s/,//g;
      my $term = $_;
      my $cmd = $zabbix_sender." -z ".$zabbixserver." -s ".$hostname." -k bacula.verify.filesexamined -o ".$term;
#      print $cmd, "\n";
      my $return = `$cmd`;
    }
    ;
}
exit 0;
