70 lines
1.7 KiB
Perl
70 lines
1.7 KiB
Perl
#!/usr/bin/perl -w
|
|
|
|
use strict;
|
|
use warnings;
|
|
use File::Find qw(finddepth);
|
|
use File::Slurp;
|
|
use Data::Printer;
|
|
use Digest::MD5 qw(md5 md5_hex md5_base64);
|
|
|
|
#sudo mount -t cifs //gw004/Versaflow /media/versashare -o username=administrator,password=8-Tung,domain=mlands
|
|
my @f = read_file('missing_bios_report.txt');
|
|
my $md = {};
|
|
write_file('anal.txt');
|
|
write_file('doppel.txt');
|
|
my $bios = '';
|
|
for my $l ( @f ) {
|
|
$l = $l =~ s/\R//r ;
|
|
if ( $l =~ /Path\: (.*)/ ) {
|
|
$bios = $1;
|
|
} elsif ( $l =~ /^ (................................)/ ) {
|
|
$md->{$1} = $bios;
|
|
# append_file('anal.txt', "$1 - $bios\n")
|
|
}
|
|
}
|
|
|
|
|
|
my $ctx = Digest::MD5->new;
|
|
my $share = '/mnt/d/Konsolen/BIOS';
|
|
#my $share = '/media/versashare/versaflow1/Protocol/';
|
|
|
|
my $multimd5 = {};
|
|
my @analyse;
|
|
|
|
finddepth( sub {
|
|
return if($_ eq '.' || $_ eq '..'|| $_ eq '.keep' );
|
|
|
|
if ( -f $File::Find::name ) {
|
|
open(my $fh, '<', $File::Find::name) or die "cannot open file $File::Find::name";
|
|
$ctx->addfile($fh);
|
|
my $m = $ctx->hexdigest;
|
|
if ( $multimd5->{$m} ) {
|
|
my @temp = @{$multimd5->{$m}};
|
|
push @temp, $File::Find::name;
|
|
$multimd5->{$m} = \@temp;
|
|
} else {
|
|
my @temp = ( $File::Find::name );
|
|
$multimd5->{$m} = \@temp;
|
|
}
|
|
|
|
if ($md->{ uc $m }) {
|
|
push @analyse, "$md->{ uc $m } <- $File::Find::name";
|
|
}
|
|
|
|
close($fh);
|
|
}
|
|
}, $share);
|
|
|
|
|
|
for my $k ( sort @analyse ) {
|
|
append_file('anal.txt', "$k\n")
|
|
}
|
|
|
|
for my $k ( keys %{$multimd5} ) {
|
|
if ( scalar @{ $multimd5->{$k} } > 1 ) {
|
|
for my $i ( @{ $multimd5->{$k} } ) {
|
|
append_file('doppel.txt', "$k - $i\n")
|
|
}
|
|
}
|
|
}
|