From 229037a3d5dcc96f96c9a42e6cdebbb54b6c1caf Mon Sep 17 00:00:00 2001 From: Alessandro Battilani Date: Thu, 13 Aug 2020 09:48:46 +0200 Subject: [PATCH] boh --- AlertNotReceived.pl | 315 ++++++++++++++++++++++++++++---------------- LoadCSVData.pl | 2 +- SendElabData.pl | 162 +++++++++++++++++++++++ 3 files changed, 364 insertions(+), 115 deletions(-) create mode 100755 SendElabData.pl diff --git a/AlertNotReceived.pl b/AlertNotReceived.pl index 6d7672d..89ac197 100644 --- a/AlertNotReceived.pl +++ b/AlertNotReceived.pl @@ -8,26 +8,33 @@ use Mail::Sender; # Variables my $username = 'aseuser'; my $password = 'Mums0001!'; -#my $database = 'ase_mums'; + +#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 $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 $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,edoardo.cavalca@aseltd.eu,alessandro.valletta@aseltd.eu,alessandro.battilani@gmail.com,corrado@geielettronica.it,luca.chiapponi@aseltd.eu'; +my $email_addr = +'andrea.segalini@aseltd.eu,andrea.carri@aseltd.eu,roberto.savi@aseltd.eu,edoardo.cavalca@aseltd.eu,alessandro.valletta@aseltd.eu,alessandro.battilani@gmail.com,corrado@geielettronica.it,luca.chiapponi@aseltd.eu'; my $cc_email_addr = $email_addr; 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); + 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"; + $email_msg = <<"END_MSG"; @@ -80,105 +87,139 @@ END_MSG } sub emailSend { - my $sender = new Mail::Sender { - auth => 'PLAIN', - authid => 'ase.mums.alert@gmail.com', - authpwd => 'ASE@mums2013F!', - smtp => 'smtp.gmail.com', - port => 587, - from => 'ASE Alert System', - to => $email_addr, - cc => $cc_email_addr, - subject => $email_obj, - msg => $email_msg, - ctype => "text/html", + my $sender = new Mail::Sender { + auth => 'PLAIN', + authid => 'ase.mums.alert@gmail.com', + authpwd => 'ASE@mums2013F!', + smtp => 'smtp.gmail.com', + port => 587, + from => 'ASE Alert System', + to => $email_addr, + cc => $cc_email_addr, + subject => $email_obj, + msg => $email_msg, + ctype => "text/html", encoding => "7bit" - }; - - my $mail_res = $sender->MailMsg({msg => $sender->{msg},}); - if (ref($mail_res) ne "Mail::Sender") { - print getLoggingTime() . " - $mail_res: $sender->{error_msg} \n"; - } else { - print getLoggingTime() . " - $email_obj\n"; - print getLoggingTime() . " - Mail sent to: $email_addr.\n"; - } + }; + + my $mail_res = $sender->MailMsg( { msg => $sender->{msg}, } ); + if ( ref($mail_res) ne "Mail::Sender" ) { + print getLoggingTime() . " - $mail_res: $sender->{error_msg} \n"; + } + else { + print getLoggingTime() . " - $email_obj\n"; + print getLoggingTime() . " - Mail sent to: $email_addr.\n"; + } } -my %ToolName = (); -my %Tools_infoCompany = (); +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, SiteName, CompanyEmail, SendAlarm, UnitNameId, ToolNameID, ToolState from mail_view;') - or die getLoggingTime() . " - $DBI::errstr"; +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;' +) or die getLoggingTime() . " - $DBI::errstr"; $sth->execute(); my $ToolNum = $sth->rows; -if ($sth->rows < 0) { +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'}}{'SiteName'} = $results->{'SiteName'}; - $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++; - } +} +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{ $results->{'idSite'} }{'SiteAlarmEmail'} = + $results->{'SiteAlarmEmail'}; + $ToolName{ $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),1) 'LettureCatene', max(NodeNum) 'NumeroNodi' from RAWDATACOR where EventDate = subdate(curdate(),1) group by UnitName, ToolNameID") - or die getLoggingTime() . " - $DBI::errstr"; +$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),1) 'LettureCatene', max(NodeNum) 'NumeroNodi' from RAWDATACOR where EventDate = subdate(curdate(),1) group by UnitName, ToolNameID" +) or die getLoggingTime() . " - $DBI::errstr"; $stw->execute(); -if ($stw->rows == 0) { +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++; - } + $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"; + 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); +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'}; +while ( my $results = $ste->fetchrow_hashref ) { + $ToolName{ $results->{'UnitName'} . $results->{'ToolNameID'} } + {'ErroriTotaliLetture'} = $results->{'ErroriTotaliLetture'}; } $ste->finish; @@ -187,41 +228,87 @@ $ste->finish; $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' ) { - $Tools_infoCompany{$ToolName{$tool}{'idCompany'}} .= "" . $tool_part; - $tools_info .= ""; - } else { - $tools_info .= ""; - } - $tools_info .= $tool_part; +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{ $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(); -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 "OOOOOOOOOOOOOO=====================OOOOOOOOOOOOOO\n"; + +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}{'SiteAlarmEmail'}; + my $send_alarm = $ToolName{$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"; diff --git a/LoadCSVData.pl b/LoadCSVData.pl index e7444bf..177773d 100644 --- a/LoadCSVData.pl +++ b/LoadCSVData.pl @@ -42,7 +42,7 @@ my $matlab_rt = "/usr/local/MATLAB/MATLAB_Runtime/v93"; my $matlab_func_dir = "/usr/local/matlab_func/"; my $matlab_error = ''; my $matlab_timeout = '1800'; -my $email_addr = 'andrea.carri@aseltd.eu,roberto.savi@aseltd.eu,edoardo.cavalca@aseltd.eu,alessandro.battilani@gmail.com,alessandro.valletta@aseltd.eu'; +my $email_addr = 'andrea.carri@aseltd.eu,edoardo.cavalca@aseltd.eu,alessandro.battilani@gmail.com,alessandro.valletta@aseltd.eu'; my ($email_msg, $email_obj); my $G201_fcheck = 0; diff --git a/SendElabData.pl b/SendElabData.pl new file mode 100755 index 0000000..b715991 --- /dev/null +++ b/SendElabData.pl @@ -0,0 +1,162 @@ +#!/usr/bin/perl +use warnings; +use strict; +use DBI; +use Getopt::Long; +use Net::FTP; +use File::Basename qw( fileparse ); +use List::Util qw( max ); +use Data::Dumper qw(Dumper); +use Cwd; + +$|++; # Autoflush + +my $filename; +my $username = 'ase_lar'; +my $password = 'laravel'; +my $db_lar = 'ase_lar'; +my $db_sp = 'ase_lar'; +my $server = 'localhost'; +my $db_name = "ase_lar"; +my @sql; +my ($unit, $tool); +my $matlab_timestamp = ""; +my $ftp_addrs; +my $ftp_user; +my $ftp_passwd; +my $ftp_parm; +my $ftp_filename; +my $ftp_target; +my $duedate = ''; + + +sub getTimeStamp{ # parm [ts] => timestamp for filename; log => timestamp for log + my $format = "%04d%02d%02d%02d%02d%02d"; + my ($p1) = @_; + my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time()); + if ( defined $p1 and $p1 eq "log" ) { + $format = "%04d%02d%02d %02d:%02d:%02d"; + } + if ( defined $p1 and $p1 eq "db_ts" ) { + ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(time() - 36000); + $format = "%04d-%02d-%02d %02d:%02d:%02d"; + } + + my $timestamp =sprintf( $format, $year + 1900, $mon + 1, $mday, $hour, $min, $sec ); + return $timestamp; +} + +sub trxelab { + my $dbh =DBI->connect( "DBI:mysql:$db_lar;host=$server", $username, $password ) + or die getTimeStamp("log"). " - pid $$ >> Could not connect to database: $DBI::errstr"; + + my $sth = $dbh->prepare( + 'select ftp_addrs, ftp_user, ftp_passwd, ftp_parm, ftp_filename, ftp_target, duedate from units + where name = "' . $unit . '";' + ) or die getTimeStamp("log") . " - pid $$ >> $DBI::errstr"; + + $sth->execute(); + if ( $sth->rows eq 0 ) { + die getTimeStamp("log") . " - pid $$ >> No unit ftp params selected.\n"; + }else { + while ( my $results = $sth->fetchrow_hashref ) { + $ftp_addrs = $results->{'ftp_addrs'}; + $ftp_user = $results->{'ftp_user'}; + $ftp_passwd = $results->{'ftp_passwd'}; + $ftp_parm = $results->{'ftp_parm'}; + $ftp_filename = $results->{'ftp_filename'}; + $ftp_target = $results->{'ftp_target'}; + $duedate = $results->{'duedate'}; + } + } + + $sth->finish; + + # Disconnect + + my $fileelab; + if ( $ftp_filename eq "" ) { + $fileelab ='/var/lib/mysql-files/'. $tool . '_'. getTimeStamp(). '.csv'; #mettere quello che si prende da query *** aggiungere $unit + }else { + $ftp_filename =~ s/(\$\w+)/$1/eeg; + $ftp_filename =~ s/\s/_/g; + $fileelab ='/var/lib/mysql-files/'. $ftp_filename . '_'. getTimeStamp() . '.csv'; + } + + my $sthdo = $dbh->do( + qq{ + select * from ( + select 'ToolNameID', 'EventDate', 'EventTime', 'NodeNum', 'NodeType', 'NodeDepth', + 'XShift', 'YShift', 'ZShift' , 'X', 'Y', 'Z', 'HShift', 'HShiftDir', 'HShift_local', + 'speed', 'speed_local', 'acceleration', 'acceleration_local', 'T_node', 'water_level', 'pressure', 'load_value', 'AlfaX', 'AlfaY', 'CalcErr' + union all + select ToolNameID, EventDate, EventTime, NodeNum, NodeType, NodeDepth, + XShift, YShift, ZShift , X, Y, Z, HShift, HShiftDir, HShift_local, + speed, speed_local, acceleration, acceleration_local, T_node, water_level, pressure, load_value, AlfaX, AlfaY, calcerr + from elabdataview + where UnitName = '$unit' and ToolNameID = '$tool' and updated_at > '$matlab_timestamp' + order by ToolNameID DESC, EventDate, EventTime, convert(`NodeNum`, UNSIGNED INTEGER) DESC + ) resulting_set + into outfile '$fileelab' + fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'} + ) or die getTimeStamp("log") . " - pid $$ >> $DBI::errstr"; + + $dbh->disconnect; + $ftp_parm //= ""; + $ftp_parm =~ s/\s//g; + + my %ftp_parms = ('Host' => $ftp_addrs,); + + foreach my $parm (split(/,/, $ftp_parm)){ + my ($key, $val) = split(/=>/, $parm); + $ftp_parms{$key} = $val; + } + $ftp_parms{'Debug'} = 0; + $ftp_parms{'Passive'} = 1; + + print getTimeStamp("log") . " - pid $$ >> $unit - $tool ftp parm:\n" . Dumper(%ftp_parms); + + if ( !defined $duedate + or($duedate eq '0000-00-00 00:00:00') + or($duedate eq '') + or($duedate gt getTimeStamp("db_ts") )) { + my $ftp = Net::FTP->new(%ftp_parms) + or die getTimeStamp("log"). " - pid $$ >> Cannot connect to $ftp_addrs: $@ \n"; + $ftp->login( $ftp_user, $ftp_passwd ) + or die getTimeStamp("log"). " - pid $$ >> Cannot login ". $ftp->message . "\n"; + $ftp_target //= ""; + if ( $ftp_target ne "" ) { + $ftp->cwd($ftp_target) + or die getTimeStamp("log"). " - pid $$ >> Change remote dir failed ". $ftp->message . "\n"; + } + + print getTimeStamp("log"). " - pid $$ >> ftp target: ". $ftp->pwd() . ".\n"; + + $ftp->put($fileelab) + or die getTimeStamp("log"). " - pid $$ >> Put failed: ". $ftp->message . "\n"; + + print getTimeStamp("log"). " - pid $$ >> ftp target lists ". scalar @{ $ftp->ls() }. " elements.\n"; + + $ftp->quit; + print getTimeStamp("log"). " - pid $$ >> $unit - $tool: $fileelab ftp put executed.\n"; + } else { + print getTimeStamp("log"). " - pid $$ >> $unit - $tool: $fileelab ftp put didn't executed because due date reached.\n"; + } + return; +} + +my $starttime = getTimeStamp("log"); +print "$starttime - pid $$ >> Start execution.\n"; + +GetOptions( + "unit=s" => \$unit, + "tool=s" => \$tool +) or die("Error in command line arguments\n"); +die("ERROR: unit must be specified.") unless defined $unit; +die("ERROR: tool must be specified.") unless defined $tool; + +$matlab_timestamp = getTimeStamp("db_ts"); +trxelab(); + +print getTimeStamp("log") . " - pid $$ >> Execution ended.\n"; +exit;