Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

McAfee Dat Check

by OzzyOsbourne (Chaplain)
on Mar 07, 2002 at 21:16 UTC ( #150133=sourcecode: print w/ replies, xml ) Need Help??

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;

Comment on McAfee Dat Check
Download Code
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.

      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

        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*

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;

Back to Code Catacombs

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (19)
As of 2014-10-20 18:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (88 votes), past polls