#!/usr/bin/perl
###########################################
# add -- Handle uptime check
# Mike Schilli, 2002 (
[email protected])
###########################################
use warnings;
use strict;
use DBI;
my $USER = "root";
my $PASSWORD = "";
die "usage: $0 system subsystem uptime" if
@ARGV != 3;
my $dbh = DBI->connect("DBI:mysql:" .
"database=serverdaten;host=localhost",
$USER, $PASSWORD, {RaiseError => 1});
uptime_add( $dbh, @ARGV );
###########################################
sub uptime_add {
###########################################
my($dbh, $system, $subsys,
$uptime) = @_;
my($sys_id) = sysname_to_id($dbh,
"systems", $system);
my($sub_id) = sysname_to_id($dbh,
"subsystems", $subsys);
# Last uptime for this system
my($db_uptime) =
$dbh->selectrow_array(<<EOT);
SELECT uptime FROM uptime
WHERE system = $sys_id AND
subsys = $sub_id
EOT
if(defined $db_uptime) {
restart_add($dbh, $sys_id, $sub_id)
if $db_uptime > $uptime;
my $sql = <<EOT;
UPDATE uptime
SET uptime = $uptime
WHERE system = $sys_id AND
subsys = $sub_id
EOT
$dbh->do($sql);
} else {
# No uptime for this system yet?
$dbh->do(<<EOT);
INSERT INTO uptime (system,
subsys, uptime)
VALUES ($sys_id, $sub_id, $uptime)
EOT
}
}
###########################################
sub sysname_to_id {
###########################################
my($dbh, $table, $name) = @_;
my $qname = $dbh->quote($name);
my($id) = $dbh->selectrow_array(<<EOT);
SELECT id FROM $table
WHERE name = $qname
EOT
unless(defined $id) {
$dbh->do(<<EOT);
INSERT IGNORE INTO $table (name)
VALUES ($qname)
EOT
$id = $dbh->selectrow_array(<<EOT);
SELECT id FROM $table
WHERE name = $qname
EOT
}
return($id);
}
###########################################
sub restart_add {
###########################################
my($dbh, $sys_id, $sub_id) = @_;
$dbh->do(<<EOT);
INSERT INTO restarts (system,
subsys)
VALUES ($sys_id, $sub_id)
EOT
}