# Skript prüft xmicfsp007 und xmicfsp008 ab 6 Uhr morgens ob die Xetra Architektur komplett gestartet ist. # Sobald eine MISS komplett gestartet ist erfolgt eine Benachrichtigung. # Sollte keine MISS bis 6.25 Uhr komplett gestartet sein, erfolgt ebenfalls eine Benachrichtigung #!/usr/bin/perl use Control::CLI; use strict; my @rec = qw /a.wisniewski@icfsystems.de/; my $ICF = 1; # Xetra xm7 xm8 #my $ICF = 2; # Eurex em5 em6 #my $ICF = 3; # Eurex em1 em2 my $SRV; my $SYS; my $M1; my $M2; my $USR; my $PWD; if ($ICF == 1) { $SRV = "XETRA"; $SYS = "WIN"; $M1 = "xmicfsp007"; $M2 = "xmicfsp008"; $USR = "intern\\gateadm"; $PWD = "xetra"; } if ($ICF == 2) { $SRV = "EUREX"; $SYS = "WIN"; $M1 = "micssp5"; $M2 = "micssp6"; $USR = "icfsystems\\gateadm"; $PWD = "bl0kkent0n"; } if ($ICF == 3) { $SRV = "EUREX"; $SYS = "SUN"; $M1 = "emicssp01"; $M2 = "emicssp02"; $USR = "gateadm"; $PWD = "eurexpwd"; } while (1) { my $retM1=1; my $retM2=1; my ($ss,$mm,$hh,$dd,$mon,$yy,$we,$doy,$st)=localtime; $mon+=1; $yy+=1900; printf "Prüfung am %02d.%02d.%4d um %02d:%02d", $dd, $mon, $yy, $hh, $mm; if ($SYS eq "WIN") { $retM1 = check("$M1"); $retM2 = check("$M2"); } if ($SYS eq "SUN") { $retM1 = check2("$M1"); $retM2 = check2("$M2"); } if ($retM1 == 0 or $retM2 == 0) { # Mail! foreach (@rec) { open FH, ">$$.txt"; printf FH "Die $SRV Architektur ist angestartet.\n\n"; printf FH "Prüfung am %02d.%02d.%4d um %02d:%02d\n\n", $dd, $mon, $yy, $hh, $mm; if ($retM1==0) { printf FH "$M1 ok\n"; } else { printf FH "$M1 nicht ok\n"; } if ($retM2==0) { printf FH "$M2 ok\n"; } else { printf FH "$M2 nicht ok\n"; } close FH; `clemail -to $_ -subject \"$SRV Architektur ($SYS) vom $dd.$mon.$yy\" -bodyfile $$.txt -from hotline\@icfsystems.de -smtpserver 130.35.0.141 -smtpport 25`; unlink "$$.txt"; } exit 0; } elsif($hh >= 6 and $mm >= 30) { # Mail! foreach (@rec) { open FH, ">$$.txt"; printf FH "Die $SRV Architektur ist nicht angestartet.\n\n"; printf FH "Prüfung am %02d.%02d.%4d um %02d:%02d\n\n", $dd, $mon, $yy, $hh, $mm; printf FH "Keine MISS ist vollständig angestartet.\n"; close FH; `clemail -to $_ -subject \"$SRV Architektur ($SYS) vom $dd.$mon.$yy !!FEHLER!!\" -bodyfile $$.txt -from hotline\@icfsystems.de -smtpserver 130.35.0.141 -smtpport 25`; unlink "$$.txt" } exit 1; } sleep 60; } sub check { my ($MISS)=@_; my $ret=0; my @result = `psexec -u $USR -p $PWD \\\\$MISS cmd /c "d: & cd d:\\opt\\gate\\base90\\bin & set SYS_CONFIG_FILE=..\\cfg\\configsys.ini & mmg XERVICE"`; my $count; $count=@result; $ret=1 if ($count == 0); foreach(@result) { $ret=1 if ($_ =~ /UNAVAILABLE/); $ret=1 if ($_ =~ /BASIC_ARCHITECTURE is down/); $ret=1 if ($_ =~ /Cannot connect to process/); } return $ret; } sub check2 { my ($MISS)=@_; my $ret=0; my $res; my @result; my $cli = new Control::CLI('TELNET'); $cli->connect($MISS); $cli->login( Username => $USR, Password => $PWD, ); $cli->cmd("bash"); $cli->cmd("cd /opt/gate/base90/bin"); $cli->cmd("SYS_CONFIG_FILE=../cfg/configsys.ini"); $cli->cmd("export SYS_CONFIG_FILE"); @result=$cli->cmd("./mmg XERVICE"); $cli->disconnect; my $count; $count=@result; $ret=1 if ($count == 0); foreach(@result) { $ret=1 if ($_ =~ /UNAVAILABLE/); $ret=1 if ($_ =~ /BASIC_ARCHITECTURE is down/); $ret=1 if ($_ =~ /Cannot connect to process/); } return $ret; }