⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 manager.pm

📁 snmp的源代码,已经在我的ubuntu下编译通过
💻 PM
📖 第 1 页 / 共 3 页
字号:
	displaytable($dbh, $tablelist->{'tablename'},		     '-clauses', "where (host = '$host') order by oidindex",		     '-dontdisplaycol', "select * from userprefs where user = '$remuser' and groupname = '$group' and tablename = ? and columnname = ? and displayit = 'N'",		     '-sort', \&mykeysort,		     '-dolink', \&linktodisplayinfo,		     '-beginhook', \&printredgreen);	if ($tablelist->{'keephistory'}) {	    my $q = self_url();	    $q =~ s/\?.*//;	    print "history: ";	    print "<a href=\"" . addtoken($q, "displayhistory=1&host=$host&group=$group&table=$tablelist->{'tablename'}hist") . "\">[table]</a>\n";	    print "<a href=\"" . addtoken($q, "displaygraph=1&host=$host&group=$group&table=$tablelist->{'tablename'}hist") . "\">[graph]</a>\n";	    print "<br>\n";	}    }}##  linktodisplayinfo(STRING):##    returns a url to the appropriate displayinfo link if STRING is a#    mib node.#sub linktodisplayinfo {    return if (exists($NetSNMP::manager::myorder{shift}));    return self_url() . "&displayinfo=" . shift;}# printredgreen(TABLENAME, DATA):##   display a red or a green dot in a table dependent on the table's#   values and associated expression##   DATA is NULL when in a header row (displaying header names).#sub printredgreen {    my $dbh = shift;    my $tablename = shift;    my $data = shift;    my ($exprs, $expr, $img);    if (!defined($data)) {	#doing header;	print "<td></td>";	return;    }    my $cmd = "SELECT * FROM errorexpressions where (tablename = '$tablename')";    print " $cmd\n" if ($NetSNMP::manager::verbose);    ( $exprs = $dbh->prepare( $cmd ) )	or die "\nnot ok: $DBI::errstr\n";    ( $exprs->execute )	or print( "\tnot ok: $DBI::errstr\n" );    $img = $NetSNMP::manager::greenimage;    while($expr = $exprs->fetchrow_hashref) {	if ($dbh->do("select oidindex from $tablename where host = '$data->{host}' and oidindex = '$data->{oidindex}' and $expr->{expression}") ne "0E0") {	    $img = $NetSNMP::manager::redimage;	}    }    print "<td><img src=$img></td>";}## display information about a given mib node as a table.#sub makemibtable {    my $dispinfo = shift;    # display information about a data type in a table    my $mib = $SNMP::MIB{SNMP::translateObj($dispinfo)};    print "<table $NetSNMP::manager::tableparms><tr><td>\n";    foreach my $i (qw(label type access status units hint moduleID description enums)) {#    foreach my $i (keys(%$mib)) {	next if (!defined($$mib{$i}) || $$mib{$i} eq "");	next if (ref($$mib{$i}) eq "HASH" && $#{keys(%{$$mib{$i}})} == -1);	print "<tr><td>$i</td><td>";	if (ref($$mib{$i}) eq "HASH") {	    print "<table $NetSNMP::manager::tableparms><tr><td>\n";	    foreach my $j (sort { $$mib{$i}{$a} <=> $$mib{$i}{$b} } keys(%{$$mib{$i}})) { 		print "<tr><td>$$mib{$i}{$j}</td><td>$j</td></tr>";	    }	    print "</table>\n";	} else {	    print "$$mib{$i}";	}	print "</td></tr>\n";    }    print "</table>\n";}# given a user, get all the groups he belongs to.sub getgroupsforuser {    my (@ret, $cursor, $row);    my ($dbh, $remuser) = @_;    ( $cursor = $dbh->prepare( "SELECT * FROM usergroups where (user = '$remuser')"))	or die "\nnot ok: $DBI::errstr\n";    ( $cursor->execute )	or print( "\tnot ok: $DBI::errstr\n" );    while (  $row = $cursor->fetchrow_hashref ) {	push(@ret, $row->{'groupname'});    }    @ret;}# given a host, get all the groups it belongs to.sub gethostsforgroup {    my (@ret, $cursor, $row);    my ($dbh, $group) = @_;    ( $cursor = $dbh->prepare( "SELECT * FROM hostgroups where (groupname = '$group')"))	or die "\nnot ok: $DBI::errstr\n";    ( $cursor->execute )	or print( "\tnot ok: $DBI::errstr\n" );    while (  $row = $cursor->fetchrow_hashref ) {	push(@ret, $row->{'host'});    }    @ret;}# display the host add entry boxsub addhostentryform {    my $group = shift;    print "<form method=\"get\" action=\"" . self_url() . "\">\n";    print "Add a new host to the group \"$group\": <input type=\"text\" name=\"newhost\"><br>";    print "<input type=\"hidden\" name=\"group\" value=\"$group\">";    print "<input type=submit value=\"Add Hosts\">\n";    print "</form>";}#is an expert user?sub isexpert {    return 0;}#is remuser a admin?sub isadmin {    my ($dbh, $remuser, $group) = @_;    return 0 if (!defined($remuser) || !defined($group));    return 1 if ($dbh->do("select * from usergroups where user = '$remuser' and groupname = '$group' and isadmin = 'Y'") ne "0E0");    return 0;}#is user a member of this group?sub isuser {    my ($dbh, $remuser, $group) = @_;    return 0 if (!defined($remuser) || !defined($group));    return 1 if ($dbh->do("select * from usergroups where user = '$remuser' and groupname = '$group'") ne "0E0");    return 0;}# displayconfigarray(HOSTS, NAMES, CONFIG):##   displays an array of generic check buttons to turn on/off certain#   variables.sub displayconfigarray {    my $dbh = shift;    my $hosts = shift;    my $names = shift;    my %config = @_;    my $cmd;    if ($config{'-check'}) {	( $cmd = $dbh->prepare( $config{'-check'} ) )	    or die "\nnot ok: $DBI::errstr\n";    }    print "<table $NetSNMP::manager::tableparms>\n";    print "<tr><td></td>";    my ($i, $j);    foreach $j (@$names) {	my $nj = $j;	$nj = $j->[0] if ($config{'-arrayrefs'} || $config{'-arrayref2'});	print "<td>$nj</td>";    }    foreach my $i (@$hosts) {	my $ni = $i;	$ni = $i->[0] if ($config{'-arrayrefs'} || $config{'-arrayref1'});	print "<tr><td>$ni</td>";	foreach $j (@$names) {	    my $nj = $j;	    $nj = $j->[0] if ($config{'-arrayrefs'} || $config{'-arrayref2'});	    my $checked = "checked" if (defined($cmd) && $cmd->execute($ni,$nj) ne "0E0");	    print "<td><input type=checkbox $checked value=y name=" . $config{prefix} . $ni . $nj . "></td>\n";	}	print "</tr>\n";    }	    print "</tr>";    print "</table>";}sub adddefaulttables {    my ($dbh, $names) = @_;    my $row;    # add in known expression tables.    my $handle = getcursor($dbh, "SELECT * FROM errorexpressions");    expr:     while($row = $handle->fetchrow_hashref) {	foreach $i (@$names) {	    if ($i->[0] eq $row->{tablename}) {		next expr;	    }	}	push @$names, [$row->{tablename}];    }}## display the setup information page for a given group.#sub setupgroup {    my $dbh = shift;    my $group = shift;        my ($hosts, $names) = gethostandgroups($dbh, $group);    adddefaulttables($dbh, $names);    print "<form method=\"post\" action=\"" . self_url() . "\">\n";    print "<input type=hidden text=\"setupgroupsubmit\" value=\"y\">";    displayconfigarray($dbh, $hosts, $names, 		       -arrayrefs, 1,		       -check, "select * from hosttables where (host = ? and tablename = ? and groupname = '$group')");    print "<input type=hidden name=group value=\"$group\">\n";    print "<input type=submit value=submit name=\"setupgroupsubmit\">\n";    print "</form>";}# a wrapper around fetching arrays of everything in a table.sub getarrays {    my $dbh = shift;    my $table = shift;    my %config = @_;    my $selectwhat = $config{'-select'} || "*";    my $handle;        $handle = getcursor($dbh, "SELECT $selectwhat FROM $table $config{-clauses}");    return $handle->fetchall_arrayref;}## get a list of all tablenames and hostnames for a given group.#sub gethostandgroups {    my $dbh = shift;    my $group = shift;    my ($tbnms);    my $names = getarrays($dbh, 'hosttables', 			  "-select", 'distinct tablename',			  "-clauses", "where groupname = '$group'");    my $hosts = getarrays($dbh, 'hostgroups', 			  "-select", 'distinct host',			  "-clauses", "where groupname = '$group'");        return ($hosts, $names);}sub setupgroupsubmit {    my $dbh = shift;    my $group = shift;        my ($hosts, $names) = gethostandgroups($dbh, $group);    adddefaulttables($dbh, $names);    foreach my $i (@$hosts) {	$dbh->do("delete from hosttables where host = '${$i}[0]' and groupname = '$group'");    }    my $rep = $dbh->prepare("insert into hosttables(host,tablename,groupname) values(?,?,'$group')");    foreach my $i (@$hosts) {	foreach my $j (@$names) {	    if (param("${$i}[0]" . "${$j}[0]")) {		print "test: ","${$i}[0] : ${$j}[0]<br>\n";		$rep->execute("${$i}[0]", "${$j}[0]") || print "$! $DBI::errstr<br>\n";            }	}    }    }## save user pref data submitted by the user#sub setupusersubmit {    my ($dbh, $remuser, $group) = @_;    my $tables = getarrays($dbh, 'hosttables', 			   "-select", 'distinct tablename',			   "-clauses", "where groupname = '$group'");        $dbh->do("delete from userprefs where user = '$remuser' and groupname = '$group'");    my $rep = $dbh->prepare("insert into userprefs(user, groupname, tablename, columnname, displayit) values('$remuser', '$group', ?, ?, 'N')");    my ($i, $j);    foreach my $i (@$tables) {	my $sth = $dbh->prepare("select * from ${$i}[0] where 1 = 0");	$sth->execute();	foreach $j (@{$sth->{NAME}}) {	    if (param("${$i}[0]" . "$j")) {		$rep->execute("${$i}[0]", "$j");	    }	}    }}sub Exit {    my ($dbh, $group) = @_;    my $tq = self_url();    $tq =~ s/\?.*//;    print "<hr>\n";    print "<a href=\"$tq\">[TOP]</a>\n";    print "<a href=\"$tq?userprefs=1&group=$group\">[display options]</a>\n";    print "<a href=\"$tq?setuponcall=1\">[setup oncall schedule]</a>\n";    if (defined($group)) {	print "<a href=\"$tq?group=$group\">[group: $group]</a>\n";	print "<a href=\"$tq?group=$group&summarizegroup=1\">[summarize errors]</a>\n";    }    $dbh->disconnect() if (defined($dbh));    return OK();#    exit shift;}## setup user preferences by displaying a configuration array of# checkbuttons for each table.#sub setupuserpreferences {    my ($dbh, $remuser, $group) = @_;    my $tables = getarrays($dbh, 'hosttables', 			   "-select", 'distinct tablename',			   "-clauses", "where groupname = '$group'");    print "<h3>Select the columns from the tables that you want to <b>hide</b> below and click on submit:</h3>\n";    print "<form method=\"post\" action=\"" . self_url() . "\">\n";    my ($i, $j);    foreach my $i (@$tables) {	my $sth = $dbh->prepare("select * from ${$i}[0] where 1 = 0");	$sth->execute();	displayconfigarray($dbh, [${$i}[0]], $sth->{NAME},			   -check, "select * from userprefs where (tablename = ? and columnname = ? and user = '$remuser' and groupname = '$group' and displayit = 'N')");    print "<br>\n";    }    print "<input type=hidden name=group value=\"$group\">\n";    print "<input type=submit value=submit name=\"setupuserprefssubmit\">\n";    print "</form>";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -