Files
scripts/cfganalyser.pl
2025-04-09 21:36:51 +02:00

84 lines
3.0 KiB
Perl

#!/usr/local/bin/perl -w
use strict;
use warnings;
use File::Find qw(finddepth);
use File::Slurp;
use Data::Printer;
use DBI;
my $db = "misc1"; # Datenbankparameter
my $user = "root"; # Datenbankuser
my $pass = "jagger"; # Datenbankpasswort
my $server = "ares"; # Datenbankserver
my $dbh = DBI->connect("DBI:mysql:$db:$server", $user, $pass)
#my $dbh = DBI->connect('DBI:mysql:prod:ares', 'root', 'jagger')
or die "Couldn't connect to database: " . DBI->errstr;
$dbh->do("update cfg_analyse_cfg set checked = ?", undef, 0);
my $prod = $dbh->selectcol_arrayref('SELECT cfg, lasttime from cfg_analyse_cfg',{ Columns=>[1,2] });
my %cfglast = @$prod;
# p $cfglast{"/{COMMON}Demontage.cfg"};
# exit;
my $typ = $dbh->selectcol_arrayref('SELECT name, tid from cfg_analyse_typ',{ Columns=>[1,2] });
my %typen = @$typ;
finddepth( sub {
return if($_ eq '.' || $_ eq '..');
if ( -f $File::Find::name ) {
my $inhalt = read_file( $File::Find::name );
$inhalt =~ s/\\\r\n/\\/g;
$inhalt =~ s/\\\n/\\/g;
chomp $inhalt;
my @spl = split(/\n/,$inhalt);
my $dname = $File::Find::name =~ s/\/home\/steffen\/prvcfg\/cpcfg\/trunk//r;
my $s1 = (stat($File::Find::name))[9];
my $s2 = $cfglast{"$dname"};
my @sap = $dname =~ /(_[0-9]{5}_|SAP[0-9]{5}_|_[0-9]{5}-|-[0-9]{5}_)/g;
my $s = $sap[0] || 0;
$s =~ s/\_//g;
$s =~ s/-//g;
$s =~ s/SAP//g;
if ( defined $s2 && $s1 eq $s2 ) {
$dbh->do("update cfg_analyse_cfg set sap = ?, checked = ? where cfg = ?", undef, $s || 0, 1, $dname);
print "aktuell - $dname\n";
} else {
print "veraltet - $dname\n";
$dbh->do("delete from cfg_analyse_cfg where cfg = ?", undef, $dname);
$dbh->do("INSERT into cfg_analyse_cfg ( cfg, lasttime, sap, checked ) VALUES (?,?,?,?)", undef, $dname, $s1, $s || 0, 1);
my $cfgid = $dbh->{'mysql_insertid'};
for my $z ( @spl ) {
if ( $z !~ m/#/ ) {
if ($z =~ / =/ ) {
$z =~ s/ //g;
$z = lc $z;
my @spl2 = split(/=/, $z);
my $j = join ('=', @spl2[1..@spl2-1]);
$j =~ s/\\/\\\n/g;
if ( !$typen{$spl2[0]} ) {
$dbh->do("REPLACE into cfg_analyse_typ ( name ) VALUES ( ?)", undef, $spl2[0]);
$typen{$spl2[0]} = $dbh->{'mysql_insertid'};
$dbh->do("INSERT into cfg_analyse_value ( cid, tid, val ) VALUES (?,?,?)", undef, $cfgid ,$typen{$spl2[0]}, $j );
} else {
$dbh->do("INSERT into cfg_analyse_value ( cid, tid, val ) VALUES (?,?,?)", undef, $cfgid ,$typen{$spl2[0]}, $j );
}
}
}
}
}
}
}, '/home/steffen/prvcfg/cpcfg/trunk/');
$dbh->do("delete from cfg_analyse_cfg where checked = ?", undef, 0);
$dbh->disconnect;
print "fertig\n";