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; }