sub create_pr_table {
my $get_pr_names = shift;
my $row;
# printer status
my $OID = ".1.3.6.1.4.1.11.2.4.3.1.2.0";
# LCD messages
my @OIDs = (".1.3.6.1.2.1.43.16.5.1.2.1.1",
# ".1.3.6.1.2.1.43.16.5.1.2.1.2",
# ".1.3.6.1.2.1.43.16.5.1.2.1.3",
);
my $pr_section_name;
# create the printer snmp info in html tag
foreach $pr_section_name (values %{$config}) {
my $pr_name = $pr_section_name->{pr_name};
next unless $pr_name;
$pr_names{$pr_name}="";
# called from show_lpq_info and only need printer names info.
next if $get_pr_names == 1;
my $cmnt = $pr_section_name->{cmnt};
my $ip = $pr_section_name->{ip};
$row .= "
";
$row .= "| $pr_name | ";
my ($session, $error) = Net::SNMP->session(
-hostname => $ip,
-community => chomp($cmnt),
-port => 161,
-timeout => 5,
);
if (!defined($session)) {
print STDERR $error;
next;
}
# printer status row
my $result = $session->get_request(
-varbindlist => [$OID]
);
$row .= "".lc($result->{$OID})." | ";
# LCD messages
$row .="";
foreach my $oid (@OIDs) {
#eval {
#local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
#alarm 5;
$result = $session->get_request(
-varbindlist => [$oid]
);
#alarm 0;
#};
$row .= lc($result->{$oid})." ";
# last if $result->{$oid} =~ m#powersave on#i;
}
$row .=" | ";
# get this printer's queue
my $queues = get_lpq_info($pr_name,1);
$row .= "$queues | ";
$row .= "
";
}
return $row;
}