8 |
# e.g. sap.monitor -s 20 will scan only hosts with sysnr == 20 |
# e.g. sap.monitor -s 20 will scan only hosts with sysnr == 20 |
9 |
# sap.monitor -S 20 will scan only hosts with sysnr != 20 |
# sap.monitor -S 20 will scan only hosts with sysnr != 20 |
10 |
|
|
11 |
|
# configuration file in /usr/local/etc/sap-mon.conf describes which |
12 |
|
# hosts (ashost) and systems (sysnr) you want to check. |
13 |
|
# |
14 |
|
# format of line is: |
15 |
|
# |
16 |
|
# ashost [tab|space] sysnr # optional comment |
17 |
|
# |
18 |
|
# you can spacify host as hostname (sap01) or with sap routers in-between |
19 |
|
# to test routers too (/H/saprtr/H/sap01) |
20 |
|
|
21 |
use strict; |
use strict; |
22 |
use Getopt::Std; |
use Getopt::Std; |
23 |
|
|
48 |
chomp; |
chomp; |
49 |
s/#.+$//g; # nuke comments |
s/#.+$//g; # nuke comments |
50 |
s/^\s+$//g; # remove empty lines |
s/^\s+$//g; # remove empty lines |
51 |
my ($ashost,$sysnr) = split(/\t+/,$_,2); |
my ($ashost,$sysnr,undef) = split(/\s+/,$_,3); |
52 |
if ($ashost && $ashost ne "" && $sysnr && $sysnr ne "" && |
if ($ashost && $ashost ne "" && $sysnr && $sysnr ne "" && |
53 |
(($opts{h} && $ashost =~ m/$opts{h}/) || not $opts{h}) && |
(($opts{h} && $ashost =~ m/$opts{h}/) || not $opts{h}) && |
54 |
(($opts{s} && $sysnr =~ m/$opts{s}/) || not $opts{s}) && |
(($opts{s} && $sysnr =~ m/$opts{s}/) || not $opts{s}) && |
57 |
my $ret = 1; |
my $ret = 1; |
58 |
my $loop = 0; |
my $loop = 0; |
59 |
my $output; |
my $output; |
60 |
|
my $sys_id; |
61 |
for(my $i=0; $i<$repeat; $i++) { |
for(my $i=0; $i<$repeat; $i++) { |
62 |
$output = `$SAPINFO trace=0 ashost=$ashost sysnr=$sysnr`; |
$output = `$SAPINFO trace=0 ashost=$ashost sysnr=$sysnr`; |
63 |
$ret &= $?; |
undef $sys_id; |
64 |
|
if ($output =~ m/System\s+ID\s+(\w+)/i) { |
65 |
|
$sys_id = $1; |
66 |
|
last; |
67 |
|
} |
68 |
# print "$loop: $ashost $sysnr $ret\n"; |
# print "$loop: $ashost $sysnr $ret\n"; |
|
last if ($ret == 0); |
|
69 |
$loop++; |
$loop++; |
70 |
sleep 5; |
sleep 5; |
71 |
} |
} |
72 |
$output =~ m/System ID\s+(\w+)/; |
if (! $sys_id) { |
|
my $sys_id = $1 || ""; |
|
|
if ($ret != 0) { |
|
73 |
push @failed, "$ashost ($sysnr)"; |
push @failed, "$ashost ($sysnr)"; |
74 |
$fail_msg .= $output; |
$fail_msg .= $output; |
75 |
} else { |
} else { |