111 lines
3.4 KiB
Perl
Executable File
111 lines
3.4 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
use DBI;
|
|
|
|
sub db_connect {
|
|
# call: db_connect($DB_HANDLE, $conf{'DB_TYPE'}, $conf{'DB_NAME'}, $conf{'DB_HOST'}, $conf{'DB_PORT'}, $conf{'DB_USER'}, $conf{'DB_PASS'});
|
|
my $ok = eval {
|
|
$_[0] = DBI->connect("DBI:$_[1]:$_[2]:$_[3]:$_[4]", "$_[5]", "$_[6]");
|
|
return 0 if ($_[0] == undef);
|
|
return 1;
|
|
};
|
|
return $ok;
|
|
}
|
|
|
|
sub db_disconnect {
|
|
# call: db_disconnect($DB_HANDLE);
|
|
$_[0]->disconnect();
|
|
}
|
|
|
|
sub db_exec {
|
|
# call: db_exec($DB_HANDLE, "insert|update|delete|alter...");
|
|
$FUNC_STATEMENT_HANDLE = $_[0]->prepare ("$_[1]");
|
|
$FUNC_STATEMENT_HANDLE->execute();
|
|
$FUNC_STATEMENT_HANDLE->finish();
|
|
}
|
|
|
|
sub db_select {
|
|
# call: db_select($DB_HANDLE, "select ... from ...");
|
|
# return: @
|
|
my @data, $i, $j;
|
|
my @ret;
|
|
$FUNC_STATEMENT_HANDLE = $_[0]->prepare ("$_[1]");
|
|
$FUNC_STATEMENT_HANDLE->execute();
|
|
$i=0;
|
|
while (@data = $FUNC_STATEMENT_HANDLE->fetchrow_array()) {
|
|
$j=0;
|
|
foreach (@data) {
|
|
$ret[$i][$j]=$_;
|
|
$j++;
|
|
}
|
|
$i++;
|
|
}
|
|
return @ret;
|
|
}
|
|
|
|
my $DB_TYPE="mysql";
|
|
my $DB_HOST="localhost";
|
|
my $DB_PORT="3306";
|
|
my $DB_NAME="observium";
|
|
my $DB_USER="root";
|
|
my $DB_PASS='@Defender2013!';
|
|
my $DB_HANDLE;
|
|
|
|
my $ok = db_connect ($DB_HANDLE, $DB_TYPE, $DB_NAME, $DB_HOST, $DB_PORT, $DB_USER, $DB_PASS);
|
|
if (!$ok) {
|
|
print "DB connect failed!\n";
|
|
exit;
|
|
}
|
|
my @ret = db_select ($DB_HANDLE, "select device_id,alert_test_id,last_changed,state,entity_type,entity_id from alert_table where alert_status = 0");
|
|
my $i=0;
|
|
my $str="";
|
|
foreach my $x (@ret) {
|
|
# print "device_id=${$x}[0]\n";
|
|
# print "alert_test_id=${$x}[1]\n";
|
|
# print "entity_type=${$x}[4]\n";
|
|
# print "entitiy_id=${$x}[5]\n";
|
|
|
|
$ts = localtime(${$x}[2]);
|
|
$td=1*24*60*60; # sekunden
|
|
|
|
if (time() - $td > ${$x}[2]) {
|
|
$i=1;
|
|
|
|
my @hret = db_select ($DB_HANDLE, "select hostname from devices where device_id = ${$x}[0]");
|
|
$str.=" $hret[0][0]; ";
|
|
my @eret = db_select ($DB_HANDLE, "select alert_name from alert_tests where alert_test_id = ${$x}[1]");
|
|
$str.="$eret[0][0]; ";
|
|
|
|
if ("${$x}[4]" eq "bgp_peer") {
|
|
my @eer = db_select ($DB_HANDLE, "select bgppeeridentifier from bgppeers where bgppeer_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
if ("${$x}[4]" eq "port") {
|
|
my @eer = db_select ($DB_HANDLE, "select ifName from ports where port_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
if ("${$x}[4]" eq "device") {
|
|
my @eer = db_select ($DB_HANDLE, "select hostname from devices where device_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
if ("${$x}[4]" eq "sensor") {
|
|
my @eer = db_select ($DB_HANDLE, "select sensor_descr from sensors where sensor_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
if ("${$x}[4]" eq "status") {
|
|
my @eer = db_select ($DB_HANDLE, "select status_descr from status where status_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
if ("${$x}[4]" eq "storage") {
|
|
my @eer = db_select ($DB_HANDLE, "select storage_descr from storage where storage_id = ${$x}[5]");
|
|
$str.="$eer[0][0]";
|
|
}
|
|
$str.="\n\n";
|
|
}
|
|
}
|
|
db_disconnect ($DB_HANDLE);
|
|
|
|
$email="tech\@conet.de";
|
|
if ($i) {
|
|
`echo "Hallo\n\nDiese Meldungen existieren zu lange!\n\n$str\n\nGruss Observium\n\n" | mailx -a "From: CONET Services Monitoring <help\@conet.de>" -a "Return-Path: help\@conet.de" -s "Monitoring beachten!" $email`;
|
|
}
|