154 lines
5.0 KiB
Perl
154 lines
5.0 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
use warnings;
|
|
use DBI;
|
|
use Data::Printer;
|
|
# use JSON;
|
|
use Getopt::Long;
|
|
use File::Slurp qw(:std);
|
|
use Term::ANSIColor;
|
|
|
|
my $inhalt; # Refrenztdaten aus der JSON Datei
|
|
my $write = 0; # Parameter zum schreiben der Datei
|
|
my $fileexist = 1; # Existiert die angegene Datei nicht wird sie zu 0 und eine Meldung erscheint
|
|
my $db = "prod"; # Datenbankparameter
|
|
my $user = "root"; # Datenbankuser
|
|
my $pass = "jagger"; # Datenbankpasswort
|
|
my $file = "delmasterlog"; # Referenzdatei
|
|
my $server = "ares"; # Datenbankserver
|
|
my $result = ""; # ergebnis des Vergleichens
|
|
my $wid = "";
|
|
|
|
my %h = ('wid' => \$wid, 'db' => \$db, 'user' => \$user, 'pass' => \$pass, 'file' => \$file, 'server' => \$server);
|
|
my $tref;
|
|
my @tabletmp;
|
|
GetOptions (\%h, 'wid=s', 'db=s', 'user=s', 'pass=s', 'file=s', 'server=s');
|
|
|
|
if ( $wid eq "" || $db eq "" || $user eq "" || $user eq "" || $server eq "" ) {
|
|
print "löschen eines Masterrecords und alles dazugehörige\n";
|
|
print "es fehlen folgende Parameter\n";
|
|
print "\n";
|
|
print "--wid -w Werksident" if ($wid eq "");
|
|
print "--server -s = Datenbankserver\n" if ($server eq "");
|
|
print "--db -d = Datenbankname\n" if ($db eq "");
|
|
print "--user -u = Datenbankuser\n" if ($user eq "");
|
|
print "--pass -p = Datenbankpasswort\n" if ($pass eq "");
|
|
print "--file -f = Datei mit Pfadangabe als Referenz\n" if ($file eq "");
|
|
exit;
|
|
}
|
|
|
|
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;
|
|
|
|
my $master = $dbh->selectrow_hashref("SELECT wid FROM prv_master WHERE wid = ?", undef, $wid);
|
|
my $masterxt = $dbh->selectrow_hashref("SELECT wid FROM prv_masterxt WHERE wid = ?", undef, $wid);
|
|
my $addr = $dbh->selectrow_hashref("SELECT wid FROM prv_addr WHERE wid = ?", undef, $wid);
|
|
my $park = $dbh->selectrow_hashref("SELECT wid FROM prv_park WHERE wid = ?", undef, $wid);
|
|
my $mount = $dbh->selectall_arrayref("SELECT master FROM prv_mount WHERE master = ?", { Slice => {} }, $wid);
|
|
my $mountcnt = @$mount;
|
|
my $chkpnt = $dbh->selectall_arrayref("SELECT cpid FROM prv_chkpnt WHERE wid = ?", { Slice => {} }, $wid);
|
|
my $chkpntcnt = @$chkpnt;
|
|
my $panel = $dbh->selectall_arrayref("SELECT panelid FROM prv_panel WHERE wid = ?", { Slice => {} }, $wid);
|
|
my $panelcnt = @$panel;
|
|
my $exec = $dbh->selectall_arrayref("SELECT execid FROM prv_exec WHERE wid = ?", { Slice => {} }, $wid);
|
|
my $execcnt = @$exec;
|
|
|
|
print "\nPRV Server: $server\n";
|
|
|
|
if ( defined $master->{wid} ) {
|
|
print "prv_master: $master->{wid} gefunden\n";
|
|
} else {
|
|
print "prv_master: nicht gefunden\nBeendet";
|
|
exit;
|
|
};
|
|
|
|
if ( defined $masterxt->{wid} ) {
|
|
print "prv_masterxt: $wid gefunden\n";
|
|
};
|
|
|
|
if ( defined $addr->{wid} ) {
|
|
print "prv_addr: $wid gefunden\n";
|
|
};
|
|
|
|
if ( defined $park->{wid} ) {
|
|
print "prv_park: $wid gefunden\n";
|
|
};
|
|
|
|
if ( $mountcnt > 0 ) {
|
|
print "prv_mount: $mountcnt Master gefunden\n";
|
|
};
|
|
|
|
if ( $chkpntcnt > 0 ) {
|
|
print "prv_chkpnt: $chkpntcnt gefunden\n";
|
|
};
|
|
|
|
if ( $panelcnt > 0 ) {
|
|
print "prv_panel: $panelcnt gefunden\n";
|
|
};
|
|
|
|
if ( $execcnt > 0 ) {
|
|
print "prv_exec: $execcnt gefunden\n";
|
|
};
|
|
|
|
|
|
print "Einträge löschen? j/N ";
|
|
chomp( my $del = <STDIN> );
|
|
|
|
if ( lc $del eq "j" ) {
|
|
$dbh->do("DELETE FROM prv_master WHERE wid = ?", undef, $wid);
|
|
print "prv_master: $wid gelöscht\n";
|
|
|
|
if ( defined $masterxt->{wid} ) {
|
|
$dbh->do("DELETE FROM prv_masterxt WHERE wid = ?", undef, $wid);
|
|
print "prv_masterxt: $wid gelöscht\n";
|
|
};
|
|
|
|
if ( defined $addr->{wid} ) {
|
|
$dbh->do("DELETE FROM prv_addr WHERE wid = ?", undef, $wid);
|
|
print "prv_addr: $wid gelöscht\n";
|
|
};
|
|
|
|
if ( defined $park->{wid} ) {
|
|
$dbh->do("DELETE FROM prv_park WHERE wid = ?", undef, $wid);
|
|
print "prv_park: $wid gelöscht\n";
|
|
};
|
|
|
|
if ( $mountcnt > 0 ) {
|
|
$dbh->do("DELETE FROM prv_mount WHERE wid = ?", undef, $wid);
|
|
print "prv_mount: $mountcnt Master gelöscht\n";
|
|
};
|
|
|
|
if ( $chkpntcnt > 0 ) {
|
|
$dbh->do("DELETE FROM prv_mount WHERE wid = ?", undef, $wid);
|
|
print "prv_chkpnt: $chkpntcnt gelöscht\n";
|
|
};
|
|
|
|
if ( $panelcnt > 0 ) {
|
|
for my $p ( @$panel) {
|
|
$dbh->do("DELETE FROM prv_panel WHERE panelid = ?", undef, $p->{panelid});
|
|
$dbh->do("DELETE FROM prv_panelmaster WHERE panelid = ?", undef, $wid);
|
|
}
|
|
print "prv_panel: $panelcnt gelöscht\n";
|
|
};
|
|
|
|
if ( $execcnt > 0 ) {
|
|
$dbh->do("DELETE FROM prv_exec WHERE wid = ?", undef, $wid);
|
|
print "prv_exec: $execcnt gelöscht\n";
|
|
};
|
|
|
|
} else {
|
|
print "Löschen abgebrochen\n";
|
|
}
|
|
|
|
# if ( $write == 1 || $fileexist == 0 ) {
|
|
# append_file($file, encode_json(\@tabletmp) );
|
|
# print "Die angegebene Datei existiert nicht und wird erstellt\n" if ( $fileexist == 0 );
|
|
# print "Datei $file wurde geschrieben\n";
|
|
# } else {
|
|
# print $result eq "" ? "Alles bestens, keine Unterschiede gefunden\n" : $result;
|
|
# }
|
|
|
|
$dbh->disconnect;
|
|
1; |