Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Verify Your Debian Potatoe

by crazyinsomniac (Prior)
on Dec 09, 2001 at 16:04 UTC ( [id://130520]=sourcecode: print w/replies, xml ) Need Help??
Category: Utility Scripts
Author/Contact Info crazyinsomniac at pm slash cb dot asterix and obelix and rymix
Description: All your smurf are to "Verify Your Debian Potatoe" after baking smurf .iso

perl verify_potatoe.pl -d D:/>burnt
update: if you run accross "d41d8cd98f00b204e9800998ecf8427e" you've got yourself an empty file. Beware, some cd-r's play mind games
#!/usr/bin/perl -w

=head1 NAME     Verify Your Debian Potatoe

=head1 AUTHOR   crazyinsomniac

If it keeps on rainin', 

=head1 LICENSE  the same as that of perl itself (`perl -v')

=cut

use strict;
use Getopt::Std;
use Digest::MD5;

$|= {on => 'nope'};

use vars qw/ %Opt %Dsp $Vv/;

getopts('?hvd:', \%Opt);

$Vv = 1 if exists $Opt{v}; # verbosity (errors and bad sums reported b
+y default)

if( exists $Opt{h} or exists $Opt{'?'} )
{
    goto FIRST_HELP
}
elsif( exists $Opt{d} )
{
    die " Where is your cd !!??\n"
       unless defined $Opt{d}; # missing arg, you ape

    chdir $Opt{d}
        or die "Dang, does the directory '$Opt{d}' really exist?\n";

    die "hmm, can't read md5sums.txt for some reason \n"
        unless -d $Opt{d} and -r $Opt{d};

    &loop_it();

    goto THEEND
}


FIRST_HELP:
{
    print<<"#||#";

    Hello and welcome to Verify Your Debian Potatoe.
    This tool relies on the md5sum.txt file
    being in the root "directory" of said cd,
    and the sums there being correct.
    
    Usage: perl $0 [-?hvd]
    -?      same as below
    -h      prints out this message
    -v      bees verbose (FAILED sums are reported by default)
    -d      /path/to/cd/a/must

#||#
}

sub loop_it
{
    open(FE,'md5sum.txt') or die "Impossible!!! $!";

    my %MD5Sums = map { chomp;  reverse split /\s\s/; } <FE>;

    close(FE);
    
    for my $file(sort keys %MD5Sums)
    {
        print "processing $file \n", if $Vv;

        open(MDFH,$file) or warn "shit, couldn't open $file, neext\n" 
+and next;

        binmode MDFH; # cause I don't know what kind of shit u runnin

        select undef, undef, undef, 0.45; # cause a lot of cdr(w)s cho
+ke up

        my $md5 = Digest::MD5->new()->addfile(*MDFH)->hexdigest();

        if ( $md5 ne $MD5Sums{$file} )
        {
            printf "Oh CRIKEY!! -- it's back to the bakery.\n%s\n%s **
+\n%s\n\n",
                   $file, $MD5Sums{$file}, $md5
        }
        elsif($Vv)
        {
            printf "G.oo00OOD!! -- no problem here\n%s\n%s **\n%s\n\n"
+,
                   $file, $MD5Sums{$file}, $md5
        }
    }
}

THEEND: die q{ levee's goin' to break }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: sourcecode [id://130520]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others contemplating the Monastery: (3)
As of 2024-04-26 03:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found