2 |
# File: sap.monitor |
# File: sap.monitor |
3 |
# Author: Dobrica Pavlinusic, dpavlin@rot13.org |
# Author: Dobrica Pavlinusic, dpavlin@rot13.org |
4 |
# Description: monitor sap servers using sapinfo from RFCSDK |
# Description: monitor sap servers using sapinfo from RFCSDK |
5 |
|
# |
6 |
|
# Usage: sap.monitor [-h ashost filter] [-s sysnr filter] |
7 |
|
# |
8 |
|
|
9 |
use strict; |
use strict; |
10 |
|
use Getopt::Std; |
11 |
|
|
12 |
|
# change paths here if you want to |
13 |
|
my $CONFIG = "/usr/local/etc/sap-mon.conf"; |
14 |
|
my $SAPINFO = "/usr/local/bin/sapinfo"; |
15 |
|
|
16 |
|
my %opts; |
17 |
|
getopt('h:s:', \%opts); |
18 |
|
|
19 |
my @config; |
my @config; |
20 |
open(C,"/usr/local/etc/sap-mon.conf") || die "sap-mon.conf: $!"; |
open(C, $CONFIG) || die "sap-mon.conf: $!"; |
21 |
@config = <C>; |
@config = <C>; |
22 |
close(C); |
close(C); |
23 |
|
|
35 |
s/#.+$//g; # nuke comments |
s/#.+$//g; # nuke comments |
36 |
s/^\s+$//g; # remove empty lines |
s/^\s+$//g; # remove empty lines |
37 |
my ($ashost,$sysnr) = split(/\t+/,$_,2); |
my ($ashost,$sysnr) = split(/\t+/,$_,2); |
38 |
if ($ashost && $ashost ne "" && $sysnr && $sysnr ne "") { |
if ($ashost && $ashost ne "" && $sysnr && $sysnr ne "" && |
39 |
my $output = `/usr/local/bin/sapinfo trace=0 ashost=$ashost sysnr=$sysnr`; |
(($opts{h} && $ashost =~ m/$opts{h}/) || not $opts{h}) && |
40 |
|
(($opts{s} && $sysnr =~ m/$opts{s}/) || not $opts{s}) ) { |
41 |
|
my $output = `$SAPINFO trace=0 ashost=$ashost sysnr=$sysnr`; |
42 |
$output =~ m/System ID\s+(\w+)/; |
$output =~ m/System ID\s+(\w+)/; |
43 |
my $sys_id = $1 || ""; |
my $sys_id = $1 || ""; |
44 |
if ($? != 0) { |
if ($? != 0) { |