The actually code is
sub NixNodes(@) {
my @nixnodes = @_;
my ($display, $chkbo_separator, $index, @threads, @header, @ho
+st_data, @hosts) = ("", hr, 0, (), (), (), ());
my @thr_output : shared;
foreach my $entry (@nixnodes) {
next unless $entry;
my ($host,$os,$tasks) = (split(/,/, $entry, 3));
$hosts[$index] = $host;
$header[$index] = a({name=>$host});
if (&CheckVersion($host, VERSION) == -1) {
warn "$host: Version mismatch or /usr/local/bi
+n/report_agent.pl is not in (x)inetd config";
} else {
foreach my $task ((split(/,/,$tasks))) {
print "Host: $host, Task: $task\n";
no strict 'refs';
my $command="parse_".$task;
my @chkbo = ();
if ($task eq 'top20') {
# $threads[$index] = threads->cr
+eate("parse_top20",$os,&RunCommand($host, 'top20'));
$threads[$index] = async {&par
+se_top20($os,&RunCommand($host, 'top20'))};
} elsif ($task eq 'chkfs') {
# $threads[$index] = threads->cr
+eate("parse_chkfs","",&RunCommand($host, 'chkfs'));
$threads[$index] = async {&par
+se_chkfs("",&RunCommand($host, 'chkfs'))};
} elsif ($task eq 'chkbo') {
$/ = "\n**********************
+******************\n";
if ($hour >= 14) {
@chkbo = &RunCommand($
+host,'chkbo -d1');
} else {
@chkbo = &RunCommand($
+host,'chkbo');
}
if (scalar(@chkbo) > 1) {
shift @chkbo if (defin
+ed $chkbo[0] and $chkbo[0] =~ /^\s*$/);
}
# $threads[$index] = threads->cr
+eate("parse_chkbo","$host","@chkbo");
$threads[$index] = async {&par
+se_chkbo("$host","@chkbo")};
} else {
# $threads[$index] = threads->cr
+eate("$command",&RunCommand($host, $task));
$threads[$index] = async{&$com
+mand(&RunCommand($host, $task))};
}
}
}
$index++;
}
my $index2 = 0;
for my $thr (threads->list) {
if ($thr->tid && !threads::equal($thr, threads->self))
+ {
print "Thread ID is ".$thr->tid." of $index\n";
$host_data[$index2] = $thr->join;
$display .= $header[$index2] if ($header[$inde
+x2]);
$display .= table({-width=>'100%',-border=>'1'
+,-class=>'main'},
Tr(th({-class=>'nodena
+me'},b(uc($hosts[$index2])))),
Tr(td($host_data[$inde
+x2]))).
a({-href=>'#top'},font({-class
+=>'top'},"Top"));
$index2++;
}
}
return $display;
}
and the output is
Host: bbsmce, Task: top20
Host: bbsmce, Task: chkfs
Host: bbsmce, Task: errpt
Host: bbsmce, Task: chkbo
Host: bbspro, Task: top20
Host: bbspro, Task: chkfs
Host: bbspro, Task: errpt
Host: bbspro, Task: chkbo
Host: bbsfin, Task: top20
Host: bbsfin, Task: chkfs
Host: bbsfin, Task: errpt
Host: bbsfin, Task: chkbo
Host: bbsdev, Task: top20
Host: bbsdev, Task: chkfs
Host: bbsdev, Task: errpt
Host: price, Task: top20
Host: price, Task: chkfs
Host: price, Task: errpt
Host: perch, Task: top20
Host: perch, Task: chkfs
Host: perch, Task: errpt
Host: minke, Task: top20
Host: minke, Task: chkfs
Host: minke, Task: errpt
Host: plaice01, Task: top20
Host: plaice01, Task: chkfs
Host: plaice01, Task: errpt
Host: hake01, Task: top20
Host: hake01, Task: chkfs
Host: hake01, Task: errpt
Host: tuna, Task: top20
Host: tuna, Task: chkfs
Host: tuna, Task: errpt
emperor: Version mismatch or /usr/local/bin/report_agent.pl is not in
+(x)inetd config at /usr/local/bin/generate_report_threaded.pl line 10
+42.
Host: tbits, Task: top20
Host: tbits, Task: chkfs
Host: swordfish, Task: top20
Host: swordfish, Task: chkfs
Thread ID is '1'
Thread ID is '2'
Thread ID is '3'
Thread ID is '4'
Thread ID is '5'
Thread ID is '6'
Thread ID is '7'
Thread ID is '8'
Thread ID is '9'
Thread ID is '10'
Thread ID is '11'
Thread ID is '12'
Thread ID is '13'
Thread ID is '14'
Thread ID is '15'
Thread ID is '16'
Thread ID is '17'
Thread ID is '18'
Thread ID is '19'
Thread ID is '20'
Thread ID is '21'
Thread ID is '22'
Thread ID is '23'
Thread ID is '24'
Thread ID is '25'
Thread ID is '26'
Thread ID is '27'
Thread ID is '28'
Thread ID is '29'
Thread ID is '30'
Thread ID is '31'
Thread ID is '32'
Thread ID is '33'
Thread ID is '34'
Thread ID is '35'
Thread ID is '36'
Thread ID is '37'
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 1
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 1
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2
Scalars leaked: 2