setupdb
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:4k
源码类别:

SNMP编程

开发平台:

Unix_Linux

  1. #!/usr/bin/perl
  2. use DBI;
  3. $hostname = 'localhost';          # Host that serves the mSQL Database
  4. $dbname = 'snmp';                 # mySQL Database name
  5. $doit = 1;
  6. sub usage {
  7.     print "$0 [-H sqlhost] [-u user] [-p password] [-d] [-n]n";
  8.     exit 0;
  9. }
  10. while ($#ARGV > -1 && $ARGV[0] =~ /^-/) {
  11.     $_ = shift @ARGV;
  12.     usage if (/-h/);
  13.     $hostname = shift if (/-H/);
  14.     $user = shift if (/-u/);
  15.     $pass = shift if (/-p/);
  16.     $delete = 1 if (/-d/);
  17.     $verbose = 1 if (/-v/);
  18.     $doit = 0 if (/-n/);
  19. }
  20. ( $dbh = DBI->connect("DBI:mysql:database=$dbname;host=$hostname", $user, $pass))
  21.     or die "tConnect not ok: $DBI::errstrn";
  22. # run a whole ton of setup stuff
  23. if ($delete) {
  24.     DO("drop database if exists $dbname");
  25. }
  26. # here we go
  27. DO("create database $dbname");
  28. DO("use $dbname");
  29. # tables dumped with
  30. #
  31. # mysqldump -d ... snmp TABLE | perl -n -e 'while(<>) { last if (/CREATE/);} print "DO("$_"; while (<>) { last if (/);/); print; } print ")");n";'
  32. DO("CREATE TABLE hosterrors (
  33.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  34.   host varchar(64),
  35.   errormsg varchar(128),
  36.   PRIMARY KEY (id)
  37. )");
  38. DO("CREATE TABLE hosttables (
  39.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  40.   host varchar(64),
  41.   tablename varchar(64),
  42.   groupname varchar(32),
  43.   keephistory int(2),
  44.   PRIMARY KEY (id)
  45. )");
  46. DO("CREATE TABLE usergroups (
  47.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  48.   user varchar(16),
  49.   groupname varchar(32),
  50.   isadmin enum('N','Y') DEFAULT 'N',
  51.   PRIMARY KEY (id)
  52. )");
  53. DO("CREATE TABLE userprefs (
  54.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  55.   user varchar(16),
  56.   groupname varchar(32),
  57.   tablename varchar(64),
  58.   columnname varchar(64),
  59.   displayit enum('N','Y') DEFAULT 'Y',
  60.   PRIMARY KEY (id)
  61. )");
  62. DO("CREATE TABLE hostgroups (
  63.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  64.   host varchar(64),
  65.   groupname varchar(32),
  66.   sysObjectId varchar(255),
  67.   sysDescr varchar(255),
  68.   versionTag varchar(32),
  69.   sysUpTime varchar(64),
  70.   PRIMARY KEY (id)
  71. )");
  72. DO("CREATE TABLE oncall (
  73.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  74.   user varchar(16),
  75.   groupname varchar(32),
  76.   email varchar(64),
  77.   days varchar(64),
  78.   hours varchar(64),
  79.   PRIMARY KEY (id)
  80. )");
  81. DO("CREATE TABLE errorexpressions (
  82.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  83.   tablename varchar(64),
  84.   expression varchar(255),
  85.   returnfield varchar(64),
  86.   PRIMARY KEY (id)
  87. )");
  88. DO("CREATE TABLE setup (
  89.   lookup varchar(64),
  90.   varcol varchar(128),
  91.   valcol varchar(128)
  92. )");
  93. DO("CREATE TABLE authgroup (
  94.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  95.   lookup varchar(64),
  96.   varcol varchar(128),
  97.   valcol varchar(128),
  98.   PRIMARY KEY (id)
  99. )");
  100. DO("CREATE TABLE authhost (
  101.   id int(11) DEFAULT '0' NOT NULL auto_increment,
  102.   lookup varchar(64),
  103.   varcol varchar(128),
  104.   valcol varchar(128),
  105.   PRIMARY KEY (id)
  106. )");
  107. # insert the standard ucd-snmp expressions 
  108. DO("insert into errorexpressions(tablename, expression, returnfield)
  109.                 values('prTable', 'prErrorFlag > 0', 'prErrMessage')");
  110. DO("insert into errorexpressions(tablename, expression, returnfield)
  111.                 values('extTable', 'extResult > 0', 'extOutput')");
  112. DO("insert into errorexpressions(tablename, expression, returnfield)
  113.                 values('dskTable', 'dskErrorFlag > 0', 'dskErrMessage')");
  114. DO("insert into errorexpressions(tablename, expression, returnfield)
  115.                 values('laTable', 'laErrorFlag > 0', 'laErrMessage')");
  116. DO("insert into errorexpressions(tablename, expression, returnfield)
  117.                 values('fileTable', 'fileErrorFlag > 0', 'fileErrMessage')");
  118. DO("insert into errorexpressions(tablename, expression, returnfield)
  119.                 values('snmperrs', 'snmperrErrorFlag > 0', 'snmperrErrMessage')");
  120. DO("insert into errorexpressions(tablename, expression, returnfield)
  121.                 values('memory', 'memSwapError > 0', 'memSwapErrMessage')");
  122. $dbh->disconnect();
  123. sub DO {
  124.     my $cmd = shift;
  125.     print $cmd,"n" if ($verbose);
  126.     $dbh->do($cmd) if ($doit);
  127. }