Script did great - only minor modifications needed to keep it running 7 years later! For those who may be interested - I had to change some registry key paths and remove the "engine" check. It was so fast! Worked great with a trimmed-down list from "net view"
here's the modified script:
# Lists version, engine, and dat versions for Netshield servers listed in # specified infile to the specified outfile. # Usage checkdatall.pl inputfile outputfile # The input file should be a text file with one server per line # Simple Help can be obtained with or -? # Updated on 4.1.09 use strict; use Win32::TieRegistry;
#define variables my ($dat,$ver,$infile,$outfile); if ($ARGV[0]){ if ($ARGV[0] eq '-?'){die "Usage checkdatall.pl infile outfile\n";} $ARGV[0]=~s/\\/\//g; $infile=$ARGV[0]; }else{ $infile='allservers.txt'; }
if ($ARGV1){ $ARGV1=~s/\\/\//g; $outfile=$ARGV1; }else{ $outfile='checkdatall.log'; }
open (IN,"<$infile") or die "Can't open file for read"; open (OUT,">$outfile") or die "Can't open file for write"; #Read the dat file version while (<IN>){ chomp; $Registry->Delimiter("/"); $ver=$Registry->{"//$_/HKEY_LOCAL_MACHINE/Software/Network Associates/ePolicy Orchestrator/Application Plugins/VIRUSCAN8600//Version"} or print OUT "Can\'t access registry on $_\n"; $dat=$Registry->{"//$_/HKEY_LOCAL_MACHINE/Software/Network Associates/ePolicy Orchestrator/Application Plugins/VIRUSCAN8600//DATVersion"} or print OUT "Can\'t access registry on $_\n"; print OUT "$_\tVersion:$ver\tDat:$dat\n"; print "$_\tVersion:$ver\tDat:$dat\n"; } close IN; close OUT;
| [reply] |