Can you manage Norton Anti-Virus with Radmind?

By: Richard Glaser - Revised: 2006-06-06 devin

From Greg Neagle
We've been using NAV successfully for years with no problems I can identify. I use radmind to keep the application and the virus defs current. I have not yet done the 9.0.3 update, but have done past updates without problems.

At least two years ago, when I was first deploying radmind across our organization, I ran into errors when using radmind to update NAV to a newer version. This error was cleared up by implementing what I consider a "best practice" for using radmind with OS X.

Whenever a kernel extension is changed by radmind, you MUST invalidate the kernel extensions cache and reboot. If you fail to do this, you _will_ get crashes and/or unexpected behavior.
Here's how I invalidate the kernel extensions cache in my run_radmind script:

#do we need to update extensions cache?
#were any kernel extensions added, removed, or changed?
system "grep /System/Library/Extensions/ /usr/local/bin/lapply > /private/tmp/extensionsCheckFile";
#check the extensionsCheckFile filesize. If it's greater than zero, touch /System/Library/Extensions
$extcfsize = ( stat( extensionsCheckFile ))[ 7 ];
if ( $extcfsize > 0 ) {
system "/usr/bin/touch /System/Library/Extensions";
}

Where '$lapplyinput" is the path to the file given to lapply, and "$extensionsCheckFile" is a temp file used simply to hold the results of this operation. touching /System/Library/Extensions causes its modification date to be newer than the mod date of the kernel extensions cache, and so on the next restart, this cache is rebuilt.

Another "best practice" is to look for changed Preference Panes and invalidate the appropriate cache:

#do we need to invalidate Preferences Panes cache?
#were any prefs panes added, removed, or changed?
system "grep /Library/PreferencePanes/ /usr/local/bin/lapply > /private/tmp/prefsPanesCheckFile";
#check the prefsPanesCheckFile filesize. If it's greater than zero, touch /System/Library/PreferencePanes
$ppcfsize = ( stat( prefsPanesCheckFile ))[ 7 ];
if ( $ppcfsize > 0 ) {
system "/usr/bin/touch /System/Library/PreferencePanes";
}

Here is the script:

#!/usr/bin/perl
#my $hostname=`hostname`;
system "curl http://131.152.**.**/cgi-bin/RadmindCheckin?`/bin/hostname`";
system "curl http://131.152.**.**/cgi-bin/RadmindCheckin1";
cmd;

#do we need to update extensions cache?
#were any kernel extensions added, removed, or changed?
system "grep /System/Library/Extensions/ /usr/local/bin/lapply > /private/tmp/extensionsCheckFile";
#check the extensionsCheckFile filesize. If it's greater than zero, touch /System/Library/Extensions
$extcfsize = ( stat( extensionsCheckFile ))[ 7 ];
if ( $extcfsize > 0 ) {
system "/usr/bin/touch /System/Library/Extensions";
}

#do we need to invalidate Preferences Panes cache?
#were any prefs panes added, removed, or changed?
system "grep /Library/PreferencePanes/ /usr/local/bin/lapply > /private/tmp/prefsPanesCheckFile";
#check the prefsPanesCheckFile filesize. If it's greater than zero, touch /System/Library/PreferencePanes
$ppcfsize = ( stat( prefsPanesCheckFile ))[ 7 ];
if ( $ppcfsize > 0 ) {
system "/usr/bin/touch /System/Library/PreferencePanes";
}

system "rm /private/tmp/extensionsCheckFile";
system "rm /private/tmp/prefsPanesCheckFile";