#!/usr/bin/perl -w # Time-stamp: <2001-08-05 15:17:41 nik@nerxs.com> # nerxs.pl # This one glues all nerxsscripts together. use POSIX qw{strftime}; if ($ARGV[0]) { $path = $ARGV[0]; } else { print "Usage: nerxs.pl [DIR].\n"; exit; } # Liefert alle Dateinamen mit Pfad @files = `/home/nik/makenerxs/Tools/find.pl $path`; # Sucht alle URLs aus den angegebenen Dateien $u = 0; foreach $file (@files) { open(URL, "/home/nik/makenerxs/Tools/grabber.pl $file |") or die "Forking Error: $!\n"; while() { if ($_ ne "\n" || $_ ne "") { push(@urls, $_); chomp($urls[$u++]); } } close (URL); } foreach $file (@files) { chomp($file); } $i = 0; $l = 0; # schickt die URLs an lnck open(CHECK, "/home/nik/makenerxs/Tools/lnck.pl @urls |") or die "Forking Error: $!\n"; print "Checking $files[0]...\n"; while () { if($_ ne "\n") { ($key, $val) = /^(\w+):\s*(.*)$/; $HoH{$files[$i]}{$key} = $val; ## #print "$key \t $HoH{$files[$i]}{$key}\n"; if ($key eq "URL" || $key eq "STATE") { print "$key \t $HoH{$files[$i]}{$key}\n"; } } else { if ($i < $#files) { print "\n"; print "Checking $files[$i+1]...\n"; } $i++; } } close (CHECK); for $l (0 ... $#files) { readFile(); } printHash(); sub readFile { open(FH, "< $files[$l]") or die "could not open $file: $!."; print "Reading $files[$l]...\n"; while() { foreach ($_) { ($key, $val) = /^(\w+):\s*(.*)$/; $site{$key} = $val; # next - don't take the file's value, keep lnck's if ($key eq "MODIF") { next; } if ($key eq "CHECK") { next; } if ($key eq "STATE") { next; } if ($key eq "HASH") { next; } $HoH{$files[$l]}{$key} = $site{$key}; } $HoH{$files[$l]}{'MTIME'} = strftime "%Y-%m-%d %H:%M:%S", localtime; $HoH{$files[$l]}{'MTIME'} .= " lnck"; } close (FH); #print "$files[$l]\t"; #print "$HoH{$files[$l]}{'HASH'} :: $site{'HASH'}\n"; # HASHES SIND GLEICH. ENTWEDER "" oder "ekrwhrflfweriirgendwas" if ($HoH{$files[$l]}{'HASH'} eq $site{'HASH'}) { #print "lnck: $HoH{$files[$l]}{'HASH'}:: Datei: $site{'HASH'}"; #print "\tHashes sind gleich.\n"; if ($HoH{$files[$l]}{'HASH'} eq "") { #print "Last modified existiert.\n\n"; } else { #print "Last modified existiert nicht.\n"; #print "Datei wurde nicht geändert.\n"; #print "Last Modified aus Datei übernehmen.\n"; #print '$HoH{$files[$l]}{\'MODIF\'} = $site{\'MODIF\'}'; #print "\nlnck: $HoH{$files[$l]}{'MODIF'} :: Datei: $site{'MODIF'}\n\n"; $HoH{$files[$l]}{'MODIF'} = $site{'MODIF'}; } } # HASHES SIND UNGLEICH. else { #print "$HoH{$files[$l]}{'HASH'}:: \t$site{'HASH'}"; #print "\tHashes sind ungleich.\n"; if ($site{'HASH'} eq "") { #print "Hash in der Datei ist leer. Die Datei ist neu.\n"; #print "Last Modified von lnck so lassen. lnck: $HoH{$files[$l]}{'MODIF'}\n"; #print "Hash so lassen. lnck: $HoH{$files[$l]}{'HASH'}\n\n"; # $site{'HASH'} = $HoH{$files[$l]}{'HASH'}; } else { #print "Datei wurde geändert.\n"; #print "Last Modified auf Site Last Checked setzen.\n"; #print "lnck: $HoH{$files[$l]}{'MODIF'} :: Datei: $site{'CHECK'}\n"; #print '$HoH{$files[$l]}{\'MODIF\'} = $site{\'CHECK\'}'; $HoH{$files[$l]}{'MODIF'} = $site{'CHECK'}; #print "\nHash so lassen. $HoH{$files[$l]}{'HASH'}\n\n"; # $site{'HASH'} = $HoH{$files[$l]}{'HASH'}; } } } sub printHash { foreach $site ( keys %HoH ) { open(TEMP, "> $site.tmp") or die "could not open $site.tmp: $!."; for $role ( keys %{ $HoH{$site} } ) { print TEMP "$role:\t $HoH{$site}{$role}\n"; } close(TEMP); system("mv $site.tmp $site"); } }