| #!/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); |
| } |