# 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 /technik@icfsystems.de/; my $M1="micssp5"; my $M2="micssp6"; 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; $retM1 = check("$M1"); $retM2 = check("$M2"); if ($retM1 == 0 or $retM2 == 0) { # Mail! foreach (@rec) { open FH, ">$$.txt"; printf FH "Die Eurex 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 \"Eurex Architektur (Windows) 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 Eurex 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 \"Eurex Architektur (Windows) 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 icfsystems\\gateadm -p bl0kkent0n \\\\$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 => 'gateadm', Password => 'eurexpwd', ); $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; }