5,678 bytes added
, 11:15, 15 March 2013
as per forum
[http://forums.contribs.org/index.php?topic=49702.new#new forum]
I have formmated for wiki
#!/bin/bash
# clamcvdget
# routine created on 03-14-2013 15:00
# this routine will update the clamav virus signature datafiles
######################################## VARIABLES FOR TESTING
# SET skipdownload TO 1 WILL SKIP DOWNLOADING OF NEW CVD FILES
# IF FILES NEED TO BE DOWNLOADED THEY WILL BE AUTOMATICALLY
# FOR TESTING PURPOSES
skipdownload="0"
# SET dovirustest TO 1 WILL CAUSE A SHORT CLAMSACN VIRUS
# TEST TO DISPLAY SHOWING SUMMARY AND KNOWN VIRUS COUNT
doclamtest="1"
#SET showversion TO 1 TO DISPLAY VERSION OF CLAMD AND CLAMSCAN
showversion="1"
#############################################################
####################### THESE VARIABLES MUST BE SET CORRECTLY
downloadurl="db.us.clamav.net"
file1="main.cvd"
file2="daily.cvd"
file3="bytecode.cvd"
clamdir="/var/clamav"
downloaddirectory=""
downloaddirectory1='/var/clamav/download/1'
downloaddirectory2='/var/clamav/download/2'
#############################################################
/usr/bin/renice 20 -p $$ > /dev/null
############################### begin of functions
# FUNCTION TO COMPARE DOWNLOADED CVD FILES
function comparecvdfiles {
result="0"
if ! diff \
"$downloaddirectory1/$file1" \
"$downloaddirectory2/$file1" > /dev/null
then
return 0
fi
if ! diff \
"$downloaddirectory1/$file2" \
"$downloaddirectory2/$file2" > /dev/null
then
return 0
fi
if ! diff \
"$downloaddirectory1/$file2" \
"$downloaddirectory2/$file2" > /dev/null
then
return 0
fi
result="1"
}
# FUNCTION TO DOWNLOAD CVD FILES
function downloadcvdfiles {
result="0"
cd /tmp
currentdir=$PWD
if [ $currentdir != "/tmp" ]
then
return 0
fi
if [ $downloaddirectory == "" ] | [ $downloaddirectory == "/" ]
then
return 0
fi
mkdir -p $downloaddirectory
chmod 755 $downloaddirectory
rm -f $downloaddirectory/* > /dev/null
cd $downloaddirectory
currentdir=$PWD
if [ $currentdir == "/tmp" ] | [ $currentdir == "/" ] | [ $currentdir == "/root" ]
then
return 0
fi
wget -q $downloadurl/$file3
wget -q $downloadurl/$file1
wget -q $downloadurl/$file2
echo "done with downloading"
cd /tmp
result="1"
}
#FUNCITON TO CHECK FOR EXISTENCE OF CVD FILES
function dodownloadfilesexist {
result="0"
if [ ! -f "$downloaddirectory/$file1" ] | [ ! -f "$downloaddirectory/$file2" ] \
| [ ! -f "$downloaddirectory/$file3" ]
then
return 0
else
result="1"
fi
}
################################## end of functions
#TODAY=$(date +"%Y%m%d %T")
#echo "$TODAY started"
if [ $skipdownload == "0" ]
then
echo "downloding new clamav cvd files"
downloaddirectory=$downloaddirectory1
downloadcvdfiles
fi
# DOWNLOAD FIRST SET OF CVD FILES IF NOT EXIST
downloaddirectory=$downloaddirectory1
dodownloadfilesexist
if [ $result == "0" ]
then
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
echo "Update cvd files do not exist"
echo "Cannot update Clamav"
exit 0
fi
# DOWNLOAD SECOND SET OF CVD FILES IF NOT EXIST
downloaddirectory=$downloaddirectory2
dodownloadfilesexist
if [ $result == "0" ]
then
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
if [ $result == "0" ]
then
echo "Update cvd files do not exist"
echo "Cannot update Clamav"
exit 0
fi
comparecvdfiles
if [ $result == "0" ]
then
downloaddirectory=$downloaddirectory2
dodownloadfilesexist
if [ $result == "0" ]
then
downloadcvdfiles
fi
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
echo "Update cvd files do not exist"
echo "Cannot update Clamav"
exit 0
fi
fi
comparecvdfiles
if [ $result == "0" ]
then
downloaddirectory=$downloaddirectory1
dodownloadfilesexist
if [ $result == "0" ]
then
downloadcvdfiles
fi
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
sleep 90
downloadcvdfiles
fi
dodownloadfilesexist
if [ $result == "0" ]
then
echo "Update cvd files do not exist"
echo "Cannot update Clamav"
exit 0
fi
fi
comparecvdfiles
if [ $result == "0" ]
then
echo "Update files are not complete"
echo "Cannot update ClamAV"
exit 0
fi
echo "updating Clamav"
service clamd stop > /dev/null
cd $clamdir
rm -f $clamdir/*.cvd 1> /dev/null 2> /dev/null
cp -p $downloaddirectory1/*.cvd $clamdir
service clamd start > /dev/null
# THE FOLLOWING LINE IS JUST A TEST TO SEE
if [ $showversion == "1" ]
then
clamd -V
clamscan -V
fi
if [ $doclamtest == "1" ]
then
echo "running clamscan test"
mkdir -p $clamdir/temp
clamscan $clamdir/temp
rm -rf $clamdir/temp
fi
#TODAY=$(date +"%Y%m%d %T")
#echo "$TODAY ended"
exit 0