From 9498abdae1f9b7c7595f8df36ed69e6e5a602aca Mon Sep 17 00:00:00 2001 From: Alessandro Battilani Date: Wed, 19 May 2021 22:23:49 +0200 Subject: [PATCH] modifiche mail x vobarno --- AlertNotReceived.pl | 2 +- AlertNotReceivedVobarno.pl | 320 +++++++++++++++++++++++++++++++++++++ 2 files changed, 321 insertions(+), 1 deletion(-) create mode 100644 AlertNotReceivedVobarno.pl diff --git a/AlertNotReceived.pl b/AlertNotReceived.pl index 9941840..a5c9afa 100644 --- a/AlertNotReceived.pl +++ b/AlertNotReceived.pl @@ -124,7 +124,7 @@ my $dbh = DBI->connect( "DBI:mysql:$db_lar;host=$server", $username, $password ) or die getLoggingTime() . " - Could not connect to database: $DBI::errstr"; my $sth = $dbh->prepare( -'select idCompany, CompanyNameShort, idSite, SiteName, CompanyEmail, SiteAlarmEmail, SendAlarm, UnitNameId, ToolNameID, ToolState from mail_view;' +'select idCompany, CompanyNameShort, idSite, SiteName, CompanyEmail, SiteAlarmEmail, SendAlarm, UnitNameId, ToolNameID, ToolState from mail_view where SiteName <> "Vobarno";' ) or die getLoggingTime() . " - $DBI::errstr"; $sth->execute(); diff --git a/AlertNotReceivedVobarno.pl b/AlertNotReceivedVobarno.pl new file mode 100644 index 0000000..b3663c2 --- /dev/null +++ b/AlertNotReceivedVobarno.pl @@ -0,0 +1,320 @@ +#!/usr/bin/perl + +use warnings; +use strict; +use DBI; +use MIME::Lite; +use Data::Dumper; + +# Variables +my $username = 'aseuser'; +my $password = 'Mums0001!'; + +#my $database = 'ase_mums'; +my $database = 'ase_lar'; +my $db_lar = 'ase_lar'; +my $server = 'localhost'; +my ( $email_msg, $email_obj, $tools_info, $ref_date ); +my $act_tool = 0; +my $gd_tool = 0; + +#my $email_addr = 'alessandro.battilani@gmail.com'; +my $email_addr = +'andrea.segalini@aseltd.eu,andrea.carri@aseltd.eu,roberto.savi@aseltd.eu,alessandro.valletta@aseltd.eu,alessandro.battilani@aseltd.eu,corrado@geielettronica.it,luca.chiapponi@aseltd.eu'; +my $cc_email_addr = $email_addr; +my $from = 'ASE Alert System'; + +sub getLoggingTime { + my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = + localtime(time); + my $nice_timestamp = sprintf( + "%04d%02d%02d %02d:%02d:%02d", + $year + 1900, + $mon + 1, $mday, $hour, $min, $sec + ); + return $nice_timestamp; +} + +sub makeEmailMsg { + $email_msg = <<"END_MSG"; + + + + + Alert from ASE + + + + + + + + +
+ + + + + + + +
+ ASE +
+ + + + + + + +
+ Alert from ASE: data received on $ref_date. +
+ + + + + + + + $tools_info +
CompanySitoID CentralinaID ToolsLetture NodiNumero NodiLetture ToolLetture Nodi in ErroreStato Tool
+ +
+
+
+ + +END_MSG +} + +sub emailSend { + my $msg = MIME::Lite->new( + From => $from, + To => $email_addr, + Cc => $cc_email_addr, + Subject => $email_obj, + Data => $email_msg + ); + + $msg->attr( "content-type" => "text/html" ); + if ($msg->send( + 'smtp', "smtps.aruba.it", + AuthUser => "alert\@aseltd.eu", + AuthPass => "Ase#2013!20\@bat", + Port => 465, + SSL => 1, + Debug => 0 + )) { + print getLoggingTime() . " - $email_obj\n"; + print getLoggingTime() . " - Mail sent to: $email_addr.\n"; + } else { + print getLoggingTime() . " - Error in sending mail to: $email_addr.\n"; + } +} + +my %ToolName = (); +my %Tools_infoCompany = (); +my %Tools_infoCompanySite = (); + +print getLoggingTime() . " - pid $$ >> Start execution.\n"; + +my $dbh = DBI->connect( "DBI:mysql:$db_lar;host=$server", $username, $password ) + or die getLoggingTime() . " - Could not connect to database: $DBI::errstr"; + +my $sth = $dbh->prepare( +'select idCompany, CompanyNameShort, idSite, SiteName, CompanyEmail, SiteAlarmEmail, SendAlarm, UnitNameId, ToolNameID, ToolState from mail_view where SiteName = "Vobarno";' +) or die getLoggingTime() . " - $DBI::errstr"; + +$sth->execute(); +my $ToolNum = $sth->rows; +if ( $sth->rows < 0 ) { + print getLoggingTime() . " - No rows from TOOLS & UNITS.\n"; +} +else { + while ( my $results = $sth->fetchrow_hashref ) { + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'idCompany'} = $results->{'idCompany'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'CompanyNameShort'} = $results->{'CompanyNameShort'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'idSite'} = $results->{'idSite'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'SiteName'} = $results->{'SiteName'}; + $ToolName{ 'site' . $results->{'idSite'} }{'SiteAlarmEmail'} = + $results->{'SiteAlarmEmail'}; + $ToolName{ 'site' . $results->{'idSite'} }{'SendAlarm'} = + $results->{'SendAlarm'}; + $ToolName{ $results->{'idCompany'} }{'CompanyEmail'} = + $results->{'CompanyEmail'}; + $ToolName{ $results->{'idCompany'} }{'SendAlarm'} = + $results->{'SendAlarm'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'UnitNameId'} = $results->{'UnitNameId'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'ToolNameID'} = $results->{'ToolNameID'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'ToolState'} = $results->{'ToolState'}; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'LettureNodi'} = "--"; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'LettureCatene'} = "--"; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'NumeroNodi'} = "--"; + $ToolName{ $results->{'UnitNameId'} . $results->{'ToolNameID'} } + {'ErroriTotaliLetture'} = "--"; + + if ( $results->{'ToolState'} eq "Active" ) { + $act_tool++; + } + } +} + +$sth->finish; + +# Disconnect +$dbh->disconnect; + +$dbh = DBI->connect( "DBI:mysql:$database;host=$server", $username, $password ) + or die getLoggingTime() . " - Could not connect to database: $DBI::errstr"; + +my $stw = $dbh->prepare( +"select UnitName, ToolNameID, EventDate, count(EventTime) 'LettureNodi', truncate(Count(EventTime)/max(NodeNum),2) 'LettureCatene', max(NodeNum) 'NumeroNodi' from RAWDATACOR where EventDate = subdate(curdate(),2) group by UnitName, ToolNameID" +) or die getLoggingTime() . " - $DBI::errstr"; +$stw->execute(); + +if ( $stw->rows == 0 ) { + print getLoggingTime() . " - No rows from RAWDATACOR.\n"; + $email_obj = "ATTENZIONE: nessuna lettura pervenuta!!!"; +} +else { + while ( my $results = $stw->fetchrow_hashref ) { + $ToolName{ $results->{'UnitName'} . $results->{'ToolNameID'} } + {'LettureNodi'} = $results->{'LettureNodi'}; + $ToolName{ $results->{'UnitName'} . $results->{'ToolNameID'} } + {'LettureCatene'} = $results->{'LettureCatene'}; + $ToolName{ $results->{'UnitName'} . $results->{'ToolNameID'} } + {'NumeroNodi'} = $results->{'NumeroNodi'}; + $ref_date = $results->{'EventDate'}; + if ( substr( $results->{'ToolNameID'}, 0, 2 ) eq "GD" ) { + $gd_tool++; + } + } + if ( ( $act_tool + $gd_tool ) == $stw->rows ) { + $email_obj = "Tutte le letture pervenute."; + } + else { + $email_obj = "ATTENZIONE: alcune letture non pervenute!!!"; + } + print getLoggingTime() + . " - tool attivi: $act_tool - GD tool: $gd_tool - righe query: " + . $stw->rows . ".\n"; +} + +$stw->finish; + +my $ste = $dbh->prepare( +"select UnitName, ToolNameID, count(val0) 'ErroriTotaliLetture' from RAWDATACOR where EventDate = ? and val0 = 'Err1' group by ToolNameID" +) or die getLoggingTime() . " - $DBI::errstr"; +$ste->bind_param( 1, $ref_date ); +$ste->execute(); +while ( my $results = $ste->fetchrow_hashref ) { + $ToolName{ $results->{'UnitName'} . $results->{'ToolNameID'} } + {'ErroriTotaliLetture'} = $results->{'ErroriTotaliLetture'}; +} + +$ste->finish; + +# Disconnect +$dbh->disconnect; + +# Ciclo x email totale rilevazioni +foreach my $tool ( sort grep { /DT|PT/ } keys %ToolName ) { + + if ( $ToolName{$tool}{'ToolState'} eq 'Monitoring Completed' ) { + next; #skip dei tool nello stato del test + } + + my $tool_part = "" + . $ToolName{$tool}{'CompanyNameShort'} + . "" + . $ToolName{$tool}{'SiteName'} . ""; + $tool_part .= + "" + . $ToolName{$tool}{'UnitNameId'} + . "" + . $ToolName{$tool}{ToolNameID} . ""; + $tool_part .= + "" + . $ToolName{$tool}{'LettureNodi'} + . "" + . $ToolName{$tool}{'NumeroNodi'} . ""; + $tool_part .= + "" . $ToolName{$tool}{'LettureCatene'} . ""; + $tool_part .= + "" + . $ToolName{$tool}{'ErroriTotaliLetture'} + . "" + . $ToolName{$tool}{'ToolState'} + . "\n"; + + if ( $ToolName{$tool}{'LettureNodi'} ne "--" ) { + $tools_info .= ""; + } + elsif ( $ToolName{$tool}{'ToolState'} eq 'Active' ) { + if ( $ToolName{ 'site' . $ToolName{$tool}{'idSite'} }{'SiteAlarmEmail'} + eq "" ) + { + $Tools_infoCompany{ $ToolName{$tool}{'idCompany'} } .= + "" . $tool_part; + } + else { + $Tools_infoCompanySite{ $ToolName{$tool}{'idSite'} } .= + "" . $tool_part; + } + $tools_info .= ""; + } + else { + $tools_info .= ""; + } + $tools_info .= $tool_part; +} +makeEmailMsg(); +emailSend(); + +#print $email_msg;print "OOOOOOOOOOOOOO=====================OOOOOOOOOOOOOO\n"; + +#print Dumper(\%ToolName); + +foreach my $comp ( keys %Tools_infoCompany ) { + $tools_info = $Tools_infoCompany{$comp}; + my $comp_email = $ToolName{$comp}{'CompanyEmail'}; + my $send_alarm = $ToolName{$comp}{'SendAlarm'}; + print getLoggingTime() + . " - Company email: $comp_email - Send Alarm: $send_alarm\n"; + if ( $send_alarm == 1 ) { + $email_addr = $ToolName{$comp}{'CompanyEmail'}; + makeEmailMsg(); + emailSend(); + + #print $email_msg;print "XXXXXXXXXXXXX=====================XXXXXXXXXXXXX\n"; + } +} + +foreach my $site ( keys %Tools_infoCompanySite ) { + $tools_info = $Tools_infoCompanySite{$site}; + my $site_email = $ToolName{ 'site' . $site }{'SiteAlarmEmail'}; + my $send_alarm = $ToolName{ 'site' . $site }{'SendAlarm'}; + print getLoggingTime() + . " - Site email: $site_email - Send Alarm: $send_alarm\n"; + if ( $send_alarm == 1 ) { + $email_addr = $site_email; + makeEmailMsg(); + emailSend(); + +#print $email_msg;print "|||||||||||||||=====================|||||||||||||||\n"; + } +} + +print getLoggingTime() . " - pid $$ >> Execution ended.\n";