--- sap.monitor 2002/07/17 10:18:14 1.6 +++ sap.monitor 2002/07/22 12:30:47 1.8 @@ -8,6 +8,16 @@ # e.g. sap.monitor -s 20 will scan only hosts with sysnr == 20 # sap.monitor -S 20 will scan only hosts with sysnr != 20 +# configuration file in /usr/local/etc/sap-mon.conf describes which +# hosts (ashost) and systems (sysnr) you want to check. +# +# format of line is: +# +# ashost [tab|space] sysnr # optional comment +# +# you can spacify host as hostname (sap01) or with sap routers in-between +# to test routers too (/H/saprtr/H/sap01) + use strict; use Getopt::Std; @@ -38,7 +48,7 @@ chomp; s/#.+$//g; # nuke comments s/^\s+$//g; # remove empty lines - my ($ashost,$sysnr) = split(/\t+/,$_,2); + my ($ashost,$sysnr,undef) = split(/\s+/,$_,3); if ($ashost && $ashost ne "" && $sysnr && $sysnr ne "" && (($opts{h} && $ashost =~ m/$opts{h}/) || not $opts{h}) && (($opts{s} && $sysnr =~ m/$opts{s}/) || not $opts{s}) && @@ -47,17 +57,19 @@ my $ret = 1; my $loop = 0; my $output; + my $sys_id; for(my $i=0; $i<$repeat; $i++) { $output = `$SAPINFO trace=0 ashost=$ashost sysnr=$sysnr`; - $ret &= $?; + undef $sys_id; + if ($output =~ m/System\s+ID\s+(\w+)/i) { + $sys_id = $1; + last; + } # print "$loop: $ashost $sysnr $ret\n"; - last if ($ret == 0); $loop++; sleep 5; } - $output =~ m/System ID\s+(\w+)/; - my $sys_id = $1 || ""; - if ($ret != 0) { + if (! $sys_id) { push @failed, "$ashost ($sysnr)"; $fail_msg .= $output; } else {