diff options
Diffstat (limited to 'perl/manager/setupdb')
-rwxr-xr-x | perl/manager/setupdb | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/perl/manager/setupdb b/perl/manager/setupdb new file mode 100755 index 0000000..03066fd --- /dev/null +++ b/perl/manager/setupdb @@ -0,0 +1,149 @@ +#!/usr/bin/perl + +use DBI; +$hostname = 'localhost'; # Host that serves the mSQL Database +$dbname = 'snmp'; # mySQL Database name +$doit = 1; + +sub usage { + print "$0 [-H sqlhost] [-u user] [-p password] [-d] [-n]\n"; + exit 0; +} + +while ($#ARGV > -1 && $ARGV[0] =~ /^-/) { + $_ = shift @ARGV; + usage if (/-h/); + $hostname = shift if (/-H/); + $user = shift if (/-u/); + $pass = shift if (/-p/); + $delete = 1 if (/-d/); + $verbose = 1 if (/-v/); + $doit = 0 if (/-n/); +} + +( $dbh = DBI->connect("DBI:mysql:database=$dbname;host=$hostname", $user, $pass)) + or die "\tConnect not ok: $DBI::errstr\n"; + +# run a whole ton of setup stuff + +if ($delete) { + DO("drop database if exists $dbname"); +} + +# here we go + +DO("create database $dbname"); +DO("use $dbname"); + +# tables dumped with +# +# mysqldump -d ... snmp TABLE | perl -n -e 'while(<>) { last if (/CREATE/);} print "DO(\"$_"; while (<>) { last if (/\);/); print; } print ")\");\n";' + +DO("CREATE TABLE hosterrors ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + host varchar(64), + errormsg varchar(128), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE hosttables ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + host varchar(64), + tablename varchar(64), + groupname varchar(32), + keephistory int(2), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE usergroups ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + user varchar(16), + groupname varchar(32), + isadmin enum('N','Y') DEFAULT 'N', + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE userprefs ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + user varchar(16), + groupname varchar(32), + tablename varchar(64), + columnname varchar(64), + displayit enum('N','Y') DEFAULT 'Y', + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE hostgroups ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + host varchar(64), + groupname varchar(32), + sysObjectId varchar(255), + sysDescr varchar(255), + versionTag varchar(32), + sysUpTime varchar(64), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE oncall ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + user varchar(16), + groupname varchar(32), + email varchar(64), + days varchar(64), + hours varchar(64), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE errorexpressions ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + tablename varchar(64), + expression varchar(255), + returnfield varchar(64), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE setup ( + lookup varchar(64), + varcol varchar(128), + valcol varchar(128) +)"); + +DO("CREATE TABLE authgroup ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + lookup varchar(64), + varcol varchar(128), + valcol varchar(128), + PRIMARY KEY (id) +)"); + +DO("CREATE TABLE authhost ( + id int(11) DEFAULT '0' NOT NULL auto_increment, + lookup varchar(64), + varcol varchar(128), + valcol varchar(128), + PRIMARY KEY (id) +)"); + +# insert the standard ucd-snmp expressions +DO("insert into errorexpressions(tablename, expression, returnfield) + values('prTable', 'prErrorFlag > 0', 'prErrMessage')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('extTable', 'extResult > 0', 'extOutput')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('dskTable', 'dskErrorFlag > 0', 'dskErrMessage')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('laTable', 'laErrorFlag > 0', 'laErrMessage')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('fileTable', 'fileErrorFlag > 0', 'fileErrMessage')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('snmperrs', 'snmperrErrorFlag > 0', 'snmperrErrMessage')"); +DO("insert into errorexpressions(tablename, expression, returnfield) + values('memory', 'memSwapError > 0', 'memSwapErrMessage')"); + +$dbh->disconnect(); + +sub DO { + my $cmd = shift; + print $cmd,"\n" if ($verbose); + $dbh->do($cmd) if ($doit); +} |