diff options
Diffstat (limited to 'perl/manager/setupauth')
-rwxr-xr-x | perl/manager/setupauth | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/perl/manager/setupauth b/perl/manager/setupauth new file mode 100755 index 0000000..d10a62e --- /dev/null +++ b/perl/manager/setupauth @@ -0,0 +1,59 @@ +#!/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 host] [-u user] [-p password] [-v] [-h] [-n] [-g groupname] [-m machinename] TOKEN VALUE\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/); + $group = shift if (/-g/); + $machine = shift if (/-m/); + $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"; + +if (defined($machine)) { + $table = "authhost"; + $group = $machine; +} else { + $table = "authgroup"; + $group = "default" if (!defined($group)); +} + +$token = shift; +$value = shift; +while(defined($value)) { + if (DO("select * from $table where lookup = '$group' and varcol = '$token'") eq "0E0") { + DO("insert into $table(lookup, varcol, valcol) values('$group', '$token', '$value')"); + } else { + DO("update $table set valcol = '$value' where lookup = '$group' and varcol = '$token'"); + } + $token = shift; + $value = shift; +} + +$dbh->disconnect(); + +sub DO { + my $cmd = shift; + print $cmd,"\n" if ($verbose); + my $ret = $dbh->do($cmd) if ($doit); + print " returned: $ret\n" if ($verbose); + if ($DBI::errstr) { + print "db error ($ret): $DBI::errstr\n"; + } + return $ret; +} |