Files
ase_perl/UnitCsvReceiverSmart.pl
2025-04-20 22:00:55 +02:00

537 lines
28 KiB
Perl

#!/usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
use File::SmartTail;
use File::Basename qw( fileparse );
use File::Path qw( make_path );
use File::Copy qw( move );
use POSIX;
use DBI;
$SIG{CHLD} = 'IGNORE';
$|++; # Autoflush
my $username = 'aselar';
my $password = 'laravel';
my $db_lar = 'ase_lar';
my $server = '85.235.153.201';
sub getTimeStamp
{ # parm [ts] => timestamp for filename; log => timestamp for log
my $format = "%04d%02d%02d%02d%02d%02d";
my ($p1) = @_;
if ( defined $p1 and $p1 eq "log" ) {
$format = "%04d%02d%02d %02d:%02d:%02d";
}
my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
localtime(time);
my $timestamp =
sprintf( $format, $year + 1900, $mon + 1, $mday, $hour, $min, $sec );
return $timestamp;
}
sub getUnitName { # parm => file received ($trfile)
my ($filename) = @_;
my ( $fileDate, $fileTime );
my ( $unittype, $unit );
my ( $ipdescgd, $ipgd ); #per gd modb
my ( $subnetdescgd, $subnetgd ); #per gd modb
my ( $gatewaydescgd, $gatewaygd ); #per gd modb
my ( $sdpathdescgd, $dfpathdescpathgd, $sdpathgd ); #per gd modb
my ( $filenamecsv, $path, $suffix ) = fileparse( $filename, qr/\.[^.]*/ );
#print getTimeStamp("log") . " >> DEBUG -> $filenamecsv\n";
if ( $path =~ m/ID\d\d\d\d\/*$/i ) {
my @strings = $path =~ /.*\/(ID.{1,4})\/*$/;
$unit = $strings[0];
}
elsif( $path =~ m/TS[^\/]*\/*$/i ){#cartelle stazioni totale, per le stazioni totali la cartella deve iniziare con TS seguito da qualsiasi carattere non /
#print getTimeStamp("log") . " >> DEBUG DENTRO!\n";
my @strings = $path =~ /.*\/(TS[^\/]*)\/*$/;
$unit = $strings[0];
}
if ( $filenamecsv =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d_\d*$/i ) {
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})_(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d\d*$/i ) {#se manca _ prima della data
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d_\d*$/i ) {
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})_(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d\d*$/i ) {#se manca _ prima della data
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d_\d*$/i ) {
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})_(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d\d*$/i ) {#se manca _ prima della data
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,6})_(.{1,6})(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d_\d*$/i ) {
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,7})_(.{1,6})_(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d\d*$/i ) {#se manca _ prima della data
my @strings = $filenamecsv =~ /(.{1,4})_(.{1,7})_(.{1,6})(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^GFLOW_ID\d\d\d\d_DT\d\d\d\d_\d*$/i ) {
my @strings = $filenamecsv =~ /(.{1,5})_(.{1,6})_(.{1,6})_(.{1,4})(.{1,2})(.{1,2})(.{1,2})(.{1,2})(.{1,2}).*/;
$unittype = $strings[0];
$unit = $strings[1];
$fileDate = $strings[3] . "/" . $strings[4] . "/" . $strings[5];
$fileTime = $strings[6] . ":" . $strings[7] . ":" . $strings[8];
}
elsif ( $filenamecsv =~ m/^measurements_\d\d_\d\d_\d\d\d\d__\d\d_\d\d$/i ) {
$unittype = "NESA";
}
elsif ( $filenamecsv =~ m/^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i )
{ # nesa file con serial number centralina
$unittype = "NESA";
}
elsif ( $filenamecsv =~ m/^D2W_ID\d\d\d\d_DT\d\d\d\d$/i ) {
my @strings = $filenamecsv =~ /(.{1,3})_(.{1,6})_(.{1,6}).*/;
$unittype = $strings[0];
$unit = $strings[1];
}
elsif ( $filenamecsv =~ m/^CR1000X_ID\d\d\d\d_DT\d\d\d\d$/i ) {
my @strings = $filenamecsv =~ /(.{1,7})_(.{1,6})_(.{1,6}).*/;
$unittype = $strings[0];
$unit = $strings[1];
}
elsif ( $filenamecsv =~ m/^(\d*_|)G301_ID\d\d\d\d_DT\d\d\d\d$/i ) {
my $filecsvname_clean =
substr( $filenamecsv, index( $filenamecsv, "G301" ) );
my @strings = $filecsvname_clean =~ /(.{1,4})_(.{1,6})_(.{1,6}).*/;
$unittype = $strings[0];
$unit = $strings[1];
}
elsif( $filenamecsv =~ m/^(\d*-|)health-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i ){ # sisgeo unit
#56371-health-2022_12_01_05_31_05.csv
#56371-readings-2022_12_01_06_00_00.csv
$unittype = "SISGEO";
}
elsif( $filenamecsv =~ m/^(\d*-|)readings-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i ){ # sisgeo unit
#56371-health-2022_12_01_05_31_05.csv
#56371-readings-2022_12_01_06_00_00.csv
$unittype = "SISGEO";
}
elsif($filenamecsv =~ m/^MesspunktePini_/ or $filenamecsv =~ m/^Integrity Monitor /){ #stazione totale mire
$unittype = "STAZIONETOTALE";
}
elsif($filenamecsv =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d$/i ){#sorotec pini
$unittype = "SOROTECPINI";
}
elsif($filenamecsv =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i ){#sorotec pini
$unittype = "SOROTECPINI";
}
elsif($filenamecsv =~ m/^HIRPINIA/){#hirpinia
$unittype = "HIRPINIA";
}
elsif ( $filenamecsv =~ m/^\d\d\d\d\d\d\d_\d\d\d\d-\d\d-\d\d_\d\d-\d\d-\d\d_\d.log$/i ) {#vulink pini
$unittype = "VULINK";
}
else {
open FILE, $filename
or warn getTimeStamp("log")
. " >> Error: opening input file $filename\n";
( $fileDate, $fileTime ) = split( /\s/, <FILE> );
( $unittype, $unit ) = split( /\s/, uc <FILE> );
if($filenamecsv =~ m/^GD\d\d\d\d$/i){ #per gd modb
( $ipdescgd, $ipgd ) = split( /\s/, <FILE> );
( $subnetdescgd, $subnetgd ) = split( /\s/, <FILE> );
( $gatewaydescgd, $gatewaygd ) = split( /\s/, <FILE> );
( $sdpathdescgd, $dfpathdescpathgd, $sdpathgd ) = split( /\s/, <FILE> );
#print getTimeStamp("log"). " >> DEBUG unittype: $unittype unit: $unit SD path: $sdpathgd\n";
}
$unit =~ s/;+$//;
close FILE;
}
return ( $unit, $unittype, $sdpathgd );
}
my $readingFile;
my $recvOKstr = "OK UPLOAD";
my @ext = ( ".csv", ".txt", ".ods" );
GetOptions( "file=s" => \$readingFile )
or die("Error in command line arguments\n");
my ( $scriptname, $scriptpath ) = fileparse($0);
my $tail = new File::SmartTail;
$tail->WatchFile( -file => $readingFile, -type => "UNIX", -timeout => '10' );
while ( my $line = $tail->GetLine() ) {
if ( index( $line, $recvOKstr ) != -1 ) {
my (
undef, undef, undef, $truser, undef,
$trip, undef, $trfile, $trstat
) = split( /[\"\[\]]/, $line );
if(index($line, "Integrity Monitor [") != -1){#se è stazione di pini
#print getTimeStamp("log") . " >> DEBUG line $line\n";
#my @sssa = split( /[\"\[\]]/, $line);
#foreach my $value (@sssa) {
# print "$value\n";
#}
my (
undef, undef, undef, $trusertmp, undef, undef,
$triptmp, $trfileuno, $trfiledue, $trfiletre, $trstattmp
) = split( /[\"\[\]]/, $line );
$trfile = $trfileuno."[".$trfiledue."]".$trfiletre;#per pini ts
$truser = $trusertmp;
$trip = $triptmp;
$trstat = $trstattmp;
#print("######\n");
#print($trfile."\n");
#print("---\n");
#print($truser."\n");
#print("---\n");
#print($trip."\n");
#print("---\n");
#print($trstat."\n");
#print("---\n");
}
#print getTimeStamp("log") . " >> DEBUG line $line\n";
my ( $login, $pass, $uid, $gid ) = getpwnam($truser)
or warn getTimeStamp("log") . " >> $truser not in passwd file.\n";
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 stop_elab FROM admin_panel LIMIT 1");
$sth->execute();
my $stop_elab;
if (my $row = $sth->fetchrow_hashref) {
$stop_elab = $row->{'stop_elab'};
} else {
$stop_elab = 0;
}
print getTimeStamp("log") . " >> stop_elab value -> $stop_elab.\n";
$sth->finish;
if ($stop_elab == 0) {
my $sth2 = $dbh->prepare("SELECT id, command, truser FROM elaborazioni_stoppate WHERE eseguito = 0");
$sth2->execute();
my $sth3 = $dbh->prepare("UPDATE elaborazioni_stoppate SET eseguito = 1 WHERE eseguito = 0");
$sth3->execute();
$sth3->finish;
while (my $row2 = $sth2->fetchrow_hashref) {
my $id = $row2->{'id'};
my $command = $row2->{'command'};
my $truser2 = $row2->{'truser'};
my ( $login2, $pass2, $uid2, $gid2 ) = getpwnam($truser2)
or warn getTimeStamp("log") . " >> $truser2 not in passwd file.\n";
print getTimeStamp("log") . " >> DEBUG exec command -> $command.\n";
my $pid = fork();
unless ($pid) {
setgid($gid2);
setuid($uid2);
$ENV{"HOME"} = 'home/' . $truser2;
exec($command) or die "Failed to exec command for id $id: $!";
exit(0);
}
waitpid($pid, 0);
}
$sth2->finish;
}
$dbh->disconnect;
#print getTimeStamp("log") . " >> DEBUG $trfile \n";
my ( $filename, $path, $suffix ) = fileparse( $trfile, qr/\.[^.]*/ );
#print getTimeStamp("log") . " >> DEBUG $filename --- $path --- $suffix \n";
$path = "/home/" . $truser . "/";
$trfile = "/home/" . $truser . $trfile;
if (
( grep( /^$suffix$/i, @ext ) )
and ( $filename =~ m/^(\d\d_\d\d\d\d_|)(DT\d\d\d\d|LOC\d\d\d\d|GD\d\d\d\d)$/i
or $filename =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^D2W_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^CR1000X_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^Hortus_ID\d\d\d\d_DT\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^(\d*_|)G301_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^GFLOW_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^measurements_\d\d_\d\d_\d\d\d\d__\d\d_\d\d$/i
or $filename =~ m/^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^(\d*-|)health-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i
or $filename =~ m/^(\d*-|)readings-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i
or $filename =~ m/^MesspunktePini_/
or $filename =~ m/^Integrity Monitor/
or $filename =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d$/i
or $filename =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^HIRPINIA/
or $filename =~ m/^\d\d\d\d\d\d\d_\d\d\d\d-\d\d-\d\d_\d\d-\d\d-\d\d_\d.log$/i )
)
{
if($filename =~ m/Hortus_ID\d\d\d\d_DT\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d/){#mancano i ; nelle prime 6 righe, aggiungo ; alla fine delle prime 6 righe dell'header
open my $hortus_file, '+<', $trfile;
my @hortus_file_lines = <$hortus_file>;
$hortus_file_lines[0] =~ tr /\r/\n/;
my @line_splitted = split(/\n/, $hortus_file_lines[0]);
for(my $i_var_for=0; $i_var_for < 6; $i_var_for++){
unless($line_splitted[$i_var_for] =~ m';'){
$line_splitted[$i_var_for] = $line_splitted[$i_var_for].';';
}
}
$hortus_file_lines[0] = join("\n", @line_splitted);
seek($hortus_file, 0, 0);
print $hortus_file @hortus_file_lines;
truncate($hortus_file, tell($hortus_file));
close $hortus_file;
#print getTimeStamp("log") . " >> DEBUG Filename $trfile, $hortus_file_lines[0]\n";
}
my ( $unit, $unittype, $sdpathgd ) = getUnitName($trfile);
#print getTimeStamp("log") . " >> Unit $unit - Filename $trfile\n";
if ( !-d "$path/log" ) {
make_path "$path/log",
{ mode => 0755, owner => $truser, group => $gid }
or warn getTimeStamp("log")
. " >> Failed to create path: $path/log";
}
my $outpath = $path . $unit;
if ($trfile =~ /home.*home/ && $trfile !~ /Integrity Monitor/) {
$outpath = $path . "home/".$unit;
}
if ( !-d "$outpath/SQL" ) {
make_path "$outpath/SQL",
{ mode => 0755, owner => $truser, group => $gid }
or warn getTimeStamp("log")
. " >> Failed to create path: $outpath/SQL";
}
my $timestamp = getTimeStamp();
my $dest = $outpath . "/" . $filename . "_" . $timestamp . $suffix;
if ( !move $trfile, $dest ) {
warn getTimeStamp("log")
. " >> Move $trfile -> $dest failed: $!";
}
else {
print getTimeStamp("log") . " >> Moved $trfile -> $dest.\n";
chmod 0666, $dest;
my @fname = ($dest);
chown $uid, $gid, @fname;
if (
(
$filename =~ m/^(\d\d_\d\d\d\d_|)(DT\d\d\d\d|LOC\d.*|GD\d*)$/i
or $filename =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^G201_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^TLP_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^GS1_ID\d\d\d\d\d_DT\d\d\d\d\d*$/i
or $filename =~ m/^D2W_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^CR1000X_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^Hortus_ID\d\d\d\d_DT\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^(\d*_|)G301_ID\d\d\d\d_DT\d\d\d\d$/i
or $filename =~ m/^GFLOW_ID\d\d\d\d_DT\d\d\d\d_\d*$/i
or $filename =~ m/^measurements_\d\d_\d\d_\d\d\d\d__\d\d_\d\d$/i
or $filename =~ m/^\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^(\d*-|)health-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i
or $filename =~ m/^(\d*-|)readings-\d\d\d\d_\d\d_\d\d_\d\d_\d\d_\d\d$/i
or $filename =~ m/^MesspunktePini_/
or $filename =~ m/^Integrity Monitor /
or $filename =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d$/i
or $filename =~ m/^CO_\d\d\d\d_\d_\d\d\d\d\d\d\d\d_\d\d\d\d\d\d_\d\d\d\d\d\d\d\d\d\d\d\d\d\d$/i
or $filename =~ m/^HIRPINIA/
or $filename =~ m/^\d\d\d\d\d\d\d_\d\d\d\d-\d\d-\d\d_\d\d-\d\d-\d\d_\d.log$/i
)
and ( $unit ne 'ID9999' )
and ( $truser ne 'corra' )
#and ( $unit ne 'ID0008' )
)
{
print getTimeStamp("log")
. " >> Sender user $truser: load data into DB.\n";
unless ( fork() ) {
setgid($gid);
setuid($uid);
$ENV{"HOME"} = 'home/' . $truser;
if ( $unittype eq 'GFLOW' ) {
exec( $scriptpath
. "gflowScript.py \"$dest\" >> /home/$truser/log/loadgflow.log 2>&1"
);
}
elsif ( $unittype eq 'NESA' ) {
exec( $scriptpath
. "nesaScript.py \"$dest\" >> /home/$truser/log/loadnesa.log 2>&1"
);
}
elsif ( $unittype eq 'SISGEO' ) {
exec( $scriptpath . "sisgeoLoadScript.py \"$dest\" >> /home/$truser/log/loadsisgeo.log 2>&1");
}
elsif ($unittype eq 'STAZIONETOTALE'){
#print getTimeStamp("log") . " >> DEBUG file STAZIONETOTALE\n";
exec( $scriptpath . "TS_PiniScript.py \"$dest\" >> /home/$truser/log/loadTS.log 2>&1");
}
elsif ( defined $sdpathgd and ($sdpathgd =~ m'/modb/GD' or $sdpathgd =~ m'/dsas/GD') ){
#print getTimeStamp("log") . " >> DEBUG file GD e modb\n";
exec( $scriptpath."loadCSVModbGDLora.py \"$dest\" >> /home/$truser/log/loadgdmodblora.log 2>&1");
}
elsif( $unittype eq 'SOROTECPINI' ){
exec( $scriptpath . "sorotecPini.py \"$dest\" >> /home/$truser/log/loadSorotecPini.log 2>&1");
}
elsif($unittype eq 'HIRPINIA'){
exec( $scriptpath . "hirpiniaLoadScript.py \"$dest\" >> /home/$truser/log/loadHirpinia.log 2>&1");
}
elsif($unittype eq 'VULINK'){
exec( $scriptpath . "vulinkScript.py \"$dest\" >> /home/$truser/log/loadVulink.log 2>&1");
}
else {
if (defined $stop_elab) {
if ($stop_elab == 1) {
print getTimeStamp("log") . " >> DEBUG 1 stop_elab 1\n";
#exec( $scriptpath
# . "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
# . "_"
# . "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
#);
my $dbh2 = DBI->connect( "DBI:mysql:$db_lar;host=$server", $username, $password ) or die getTimeStamp("log") . " - pid $$ >> Could not connect to database: $DBI::errstr";
my $insert_sth = $dbh2->prepare("INSERT IGNORE INTO elaborazioni_stoppate (type, command, truser) VALUES (0,?,?)");
my $string_to_insert = $scriptpath. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename". "_". "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1";
print getTimeStamp("log") . " >> DEBUG 1 $string_to_insert\n";
$insert_sth->execute($string_to_insert, $truser);
$insert_sth->finish;
$dbh2->disconnect;
} elsif ($stop_elab == 0) {
print getTimeStamp("log") . " >> DEBUG 1 stop_elab 0\n";
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
} else {
print getTimeStamp("log") . " >> DEBUG 1 else\n";
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
}
} else {
print getTimeStamp("log") . " >> DEBUG 1 pre-else\n";
#print getTimeStamp("log") . " >> DEBUG $dest\n";#debug
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
}
}
exit(0);
}
if ( ( $truser ne 'asega' ) and ( $truser ne 'corra' ) ) {
print getTimeStamp("log")
. " >> Sender user $truser: duplicate as asega user -> load data into DB.\n";
my $realtruser = $truser;
$truser = "asega";
$outpath =~ s/$realtruser/$truser/;
my ( $login, $pass, $uid, $gid ) = getpwnam($truser)
or warn getTimeStamp("log")
. " >> $truser not in passwd file.\n";
unless ( fork() ) {
setgid($gid);
setuid($uid);
$ENV{"HOME"} = 'home/' . $truser;
if ( defined $sdpathgd and ($sdpathgd =~ m'/modb/GD' or $sdpathgd =~ m'/dsas/GD') ){
#print getTimeStamp("log") . " >> DEBUG file GD e modb duplica\n";#debug
}
else {
if (defined $stop_elab) {
if ($stop_elab == 1) {
print getTimeStamp("log") . " >> DEBUG 2 stop_elab 1\n";
#exec( $scriptpath
# . "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
# . "_"
# . "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
#);
my $dbh2 = DBI->connect( "DBI:mysql:$db_lar;host=$server", $username, $password ) or die getTimeStamp("log") . " - pid $$ >> Could not connect to database: $DBI::errstr";
my $insert_sth = $dbh2->prepare("INSERT IGNORE INTO elaborazioni_stoppate (type, command, truser) VALUES (0,?,?)");
my $string_to_insert = $scriptpath. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename". "_". "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1";
print getTimeStamp("log") . " >> DEBUG 2 $string_to_insert\n";
$insert_sth->execute($string_to_insert, $truser);
$insert_sth->finish;
$dbh2->disconnect;
} elsif ($stop_elab == 0) {
print getTimeStamp("log") . " >> DEBUG 2 stop_elab 0\n";
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
} else {
print getTimeStamp("log") . " >> DEBUG 2 else\n";
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
}
} else {
print getTimeStamp("log") . " >> DEBUG 2 pre-else\n";
#print getTimeStamp("log") . " >> DEBUG $dest\n";#debug
exec( $scriptpath
. "LoadCSVData.pl -f \"$dest\" -s \"$outpath/SQL/$filename"
. "_"
. "$timestamp.sql\" -d $truser >> /home/$truser/log/loadcsvdata.log 2>&1"
);
}
}
exit(0);
}
}
}
}
}
}
}
exit(0);