198 lines
7.3 KiB
Perl
198 lines
7.3 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
use warnings;
|
|
use XML::LibXML;
|
|
use File::Find qw(find finddepth);
|
|
use File::Slurp;
|
|
use Data::Printer;
|
|
use DBI;
|
|
|
|
my $dbh = DBI->connect("DBI:mysql:etv_mls:TS-NAS", 'TEST', '1234')
|
|
#my $dbh = DBI->connect('DBI:mysql:prod:ares', 'root', 'jagger')
|
|
or die "Couldn't connect to database: " . DBI->errstr;
|
|
|
|
#my @s1 = $dbh->selectall_arrayref("SHOW TABLE STATUS FROM `ats`;", { Slice => {} });
|
|
my $s1 = $dbh->selectcol_arrayref("SELECT Dateiname, fileid FROM versatakt_Dateien", { Columns=>[1,2] });
|
|
my %dateien = @$s1;
|
|
|
|
my $versaflow1 = "/media/versashare/versaflow1/Protocol/";
|
|
my $versaflow2 = "/media/versashare/versaflow2/Protocol/";
|
|
my $versaflow3 = "/media/versashare/versaflow3/Protocol/";
|
|
|
|
sub dowork {
|
|
my ($ordner, $maschine ) = @_;
|
|
|
|
my @m = split($/, `find $ordner -type f`);
|
|
for my $i ( @m ) {
|
|
my @temp = split(/\//, $i );
|
|
my $cnt = scalar @temp;
|
|
my $da = $temp[ $cnt - 1 ];
|
|
|
|
if ( !defined $dateien{$da} ) {
|
|
my $inhalt = read_file( $i );
|
|
chomp $inhalt;
|
|
my $val = readwritexml($inhalt, $maschine); # gibt die values für den insert wieder
|
|
$dbh->do("INSERT ignore into versatakt(Maschine, Program, Fehler, Einlauf, Auslauf, Flux, Vhm1, Lm1, Vhm2, Lm2) Values $val") ;
|
|
$dbh->do("INSERT INTO versatakt_Dateien (Dateiname, maschine) VALUES ( ?, ? )", undef, $_, $maschine );
|
|
print "$temp[ $cnt - 1 ] verarbeitet\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
dowork($versaflow1, 'Versaflow 1');
|
|
dowork($versaflow2, 'Versaflow 2');
|
|
dowork($versaflow3, 'Versaflow 3');
|
|
|
|
#sudo mount -t cifs -o username=js000387,password=passwort //gs-archiv.win.mlands.com/versaflow$ /media/versashare
|
|
|
|
sub readwritexml() {
|
|
my ($fh, $masch ) = @_;
|
|
|
|
my $values = "";
|
|
|
|
my $xml = XML::LibXML->new();
|
|
my $tree = $xml->load_xml(string => $fh);
|
|
|
|
my @nodes = $tree->findnodes("ERSA/child::*");
|
|
|
|
for my $no (@nodes)
|
|
{
|
|
my $programm = "";
|
|
my $fehler = "";
|
|
my $einlauf = "";
|
|
my $auslauf = "",
|
|
my $fm1 = "";
|
|
my $vm11 = "";
|
|
my $lm1 = "";
|
|
my $vm41 = "";
|
|
my $lm2 = "";
|
|
|
|
my @nodes = $no->nonBlankChildNodes();
|
|
for my $n ( @nodes )
|
|
{
|
|
my $typ = $n->getAttribute("LoetProtElementTyp");
|
|
$typ =~ s/_Gm_ZeitPcbImModul//g;
|
|
$typ =~ s/Zeitpunkt//g;
|
|
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Programm" && $n->getAttribute("LoetProtElementIstwert") ne "" ) {
|
|
$programm = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Fehler") {
|
|
$fehler = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "EinlaufZeitpunkt") {
|
|
$einlauf = convertdate($n->getAttribute("LoetProtElementIstwert"));
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "AuslaufZeitpunkt") {
|
|
$auslauf = convertdate($n->getAttribute("LoetProtElementIstwert"));
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Fm1__Gm_ZeitPcbImModul") {
|
|
$fm1 = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Vm11_Gm_ZeitPcbImModul") {
|
|
$vm11 = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Lm1__Gm_ZeitPcbImModul") {
|
|
$lm1 = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Vm41_Gm_ZeitPcbImModul") {
|
|
$vm41 = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
if ( $n->getAttribute("LoetProtElementTyp") eq "Lm2__Gm_ZeitPcbImModul") {
|
|
$lm2 = $n->getAttribute("LoetProtElementIstwert");
|
|
}
|
|
}
|
|
$values .= "('$masch', '$programm', $fehler, '$einlauf', '$auslauf', $fm1, $vm11, $lm1, $vm41, $lm2),";
|
|
}
|
|
$values =~ s/,$//;
|
|
return $values;
|
|
}
|
|
|
|
|
|
sub convertdate() {
|
|
my ($date) = @_;
|
|
|
|
my @t1 = split(/ /, $date);
|
|
my @t2 = split(/\./, $t1[0] );
|
|
|
|
return "$t2[2]-$t2[1]-$t2[0] $t1[1]";
|
|
}
|
|
|
|
|
|
$dbh->disconnect;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# use POSIX;
|
|
# use Filesys::SmbClient;
|
|
|
|
# my $smb = new Filesys::SmbClient(username => "opawilly",
|
|
# password => "power4me",
|
|
# workgroup => "workgroup",
|
|
# debug => 0);
|
|
|
|
# # Maschinen bestimmen
|
|
# my $fd = $smb->opendir("smb://opawilly/H\$/Test/Versaflow");
|
|
# while (my $f = $smb->readdir_struct($fd)) {
|
|
# my $versa = "";
|
|
|
|
# if ($f->[0] == SMBC_DIR && $f->[1] ne '.' && $f->[1] ne '..' ) {
|
|
# $versa = $f->[1];
|
|
# print "Maschine ",$f->[1],"\n";
|
|
|
|
# my $jahr = "";
|
|
# my $fdm = $smb->opendir("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol");
|
|
# while (my $f1 = $smb->readdir_struct($fdm)) {
|
|
# if ($f1->[0] == SMBC_DIR && $f1->[1] ne '.' && $f1->[1] ne '..' ) {
|
|
# $jahr = $f1->[1];
|
|
# print "Jahr ",$f1->[1],"\n";
|
|
|
|
# my $monat = "";
|
|
# my $fdj = $smb->opendir("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol/$jahr");
|
|
|
|
# # ordnerstruktur enthält Monate
|
|
# while (my $f2 = $smb->readdir_struct($fdj)) {
|
|
# if ($f2->[0] == SMBC_DIR && $f2->[1] ne '.' && $f2->[1] ne '..' ) {
|
|
# $monat = $f2->[1];
|
|
# print "Monat ",$f2->[1],"\n";
|
|
|
|
# # Dateien oder Tage bestimmen
|
|
# my $fdmo = $smb->opendir("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol/$jahr/$monat");
|
|
# while (my $f3 = $smb->readdir_struct($fdmo)) {
|
|
# if ($f3->[0] == SMBC_FILE ) {
|
|
# print "$versa Datei ",$f3->[1],"\n";
|
|
# my $fh = $smb->open("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol/$jahr/$monat/$f3->[1]", '0666')
|
|
# or print "Can't read file:", $!, "\n";
|
|
# readwritexml($fh);
|
|
|
|
# } elsif ($f3->[0] == SMBC_DIR ) {
|
|
# # ordnerstruktur enthält Tage
|
|
# my $fdmoda = $smb->opendir("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol/$jahr/$monat/$f3->[1]");
|
|
# while (my $f4 = $smb->readdir_struct($fdmoda)) {
|
|
# if ($f4->[0] == SMBC_FILE ) {
|
|
# print "$versa Datei ",$f4->[1],"\n";
|
|
# my $fh = $smb->open("smb://opawilly/H\$/Test/Versaflow/$versa/Protocol/$jahr/$monat/$f3->[1]/$f4->[1]", '0666')
|
|
# or print "Can't read file:", $!, "\n";
|
|
# readwritexml( <$fh> );
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
# }
|
|
|
|
# } elsif ($f->[0] == SMBC_FILE) {
|
|
# print "File ",$f->[1],"\n";
|
|
# }
|
|
# }
|
|
|
|
#smbclient \\\\opawilly\\H$ -U opawilly pass
|