|
| Category: |
NT Admin |
| Author/Contact Info |
OzzyOsbourne |
| Description: |
Checks the Netshield Dats, engines and versions on all of your servers. Create a file called allservers.txt and put your servers in it, one per line. |
# 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 9.25.01
use strict;
use Win32::TieRegistry;
#define variables
my ($dat,$engine,$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 ($ARGV[1]){
$ARGV[1]=~s/\\/\//g;
$outfile=$ARGV[1];
}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 Associa
+tes/TVD/NetShield NT/CurrentVersion//szProductVer"} or print OUT "Can
+\'t access registry on $_\n";
$dat=$Registry->{"//$_/HKEY_LOCAL_MACHINE/Software/Network Associa
+tes/TVD/NetShield NT/CurrentVersion//szVirDefVer"} or print OUT "Can\
+'t access registry on $_\n";
$engine=$Registry->{"//$_/HKEY_LOCAL_MACHINE/Software/Network Asso
+ciates/TVD/NetShield NT/CurrentVersion//szEngineVer"} or print OUT "C
+an\'t access registry on $_\n";
print OUT "$_\tVersion:$ver\tEngine:$engine\tDat:$dat\n";
print "$_\tVersion:$ver\tEngine:$engine\tDat:$dat\n";
}
close IN;
close OUT;
|
Re: McAfee Dat Check by Marza (Vicar) on Mar 22, 2002 at 19:12 UTC |
Not bad! For what it does; it is fine.
However, I tend to not like input files unless there are many many entries.
If you work in a group, invariably somebody forgets to update the file if a new server is istalled and or retired.
Also, error checking. If it was an issue, you will get blank entries for machines that are not up, don't exist, or don't have NetShield installed.
| [reply] |
|
Not bad! For what it does; it is fine.
What a glowing recommendation. Take something that I worked hard on, thought was good, use a lot, and knock it down. Thanks for your input.
The reason I use an input file for my 500+ servers is that I can update my server list for the 30+ scripts that I run against them in one place.
Sorry, you caught me on a bad day, and I'm a little insulted (although I'm not sure if I should be).
I would probably feel better if you had made code corrections and said, "See, stupid? Like this." rather than just knocking down the code with offhand remarks. But that's the way it goes I suppose...
-OzzyOsbourne
| [reply] |
|
Well I guess I should not post when I am tired. Does that sound better then posting without a license? ;-)
In your case that does make sense! 500 Servers ick. I was going to say why not automate but if you have 500 servers then you have a few thousand workstations. Right?
I only have about 350 machines total. The script I wrote checks all machines. I used the Roth NetAdmin mod to get a list of all NT/2000 workstations and servers. The only problem is that you have to build exclusion routines for stuff like Samba servers. But again in my case, people here would not always update the input file.
Why not build a ping into the routine. That way if a machine is down, you avoid the registry error when it tried to connect. I needed this because a few of our junior admins would go looking for the down machine and try and figure out why it did not have McAfee or Netshield installed! *SIGH*
| [reply] [d/l] [select] |
|
Re: McAfee Dat Check by Anonymous Monk on Apr 01, 2009 at 13:09 UTC |
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] |
Back to Code Catacombs
|
|