作者:cschen33@pchome.com.tw
更新日期:2004/03/31-2004/08/11
在企業體中常會購買單機的防毒軟體給一般電腦使用,可是如果沒有買企業版的時候,在更新病毒碼時,常會有一些問題,經統計不到3分之1的使用者會正確使用
防毒軟體,尢其是更新病毒碼部份,雖然我們可以使用預約的功能來更新,但是如果公司組織比較大時每天可能同時有數十台電腦需要更新,可能會造成一時頻寬過
窄的問題,因此我想簡化為一台向外更新,其它內部使用區域網路來複製更
新,但一台如
何向外更
新?,這跟你買的防毒軟體有關了,以下我將討論更新趨勢防毒程式的病毒碼,因為版本的不同所以會有所不同,在使用本程式時請加以修改為你的版本需求。
本程式只是簡化it人員的工作,目前我的server已經順利執行更新病毒碼的工作
自己寫一個有點難,因此我參考別人
的程式
以下是一個linux郵件過濾程式
MailScanner(www.mailscanner.info),其中有一些關於更新病毒碼的程式,包含了下述的防毒程式,你可以找到
trend
# sophos from www.sophos.com, or
# sophossavi (also from www.sophos.com, using the SAVI perl module), or
# mcafee from www.mcafee.com, or
# command from www.command.co.uk, or
# drweb from
www.dials.ru/english/dsav_toolkit/drwebunix.htm, or
# kaspersky-4.5 from www.kaspersky.com, or
# kaspersky from www.kaspersky.com, or
# kavdaemonclient from www.kaspersky.com, or
# etrust from
http://www3.ca.com/Solutions/Product.asp?ID=156, or
# inoculate from www.cai.com/products/inoculateit.htm, or
# inoculan from ftp.ca.com/pub/getbbs/linux.eng/inoctar.LINUX.Z,
or
# nod32 from www.nod32.com, or
# nod32-1.99 from www.nod32.com, or
# f-secure from www.f-secure.com, or
# f-prot from www.f-prot.com, or
# panda from www.pandasoftware.com, or
# rav from www.ravantivirus.com, or
# antivir from www.antivir.de, or
# clamav from www.clamav.net, or
# clamavmodule (also from www.clamav.net using the ClamAV perl module),
or
#
trend
from www.trendmicro.com, or
# norman from www.norman.de, or
查詢程式所在
rpm -ql mailscanner | grep trend
/usr/lib/MailScanner/trend-autoupdate
分析程式內容,我們可以得到下面的結論:
- 取得目前病毒碼最後版本資訊-病毒碼的資訊檔 ftp.antivirus.com/products/pattern/opr.ini
- 比對本機病毒碼及最新病毒碼
1.已經是最新-停止
2.需要更新
下載病毒碼
解壓縮
複製檔案到所要分享的目錄
刪除舊的病毒碼
- 其它client端會複製更新,並刪除檔案,原理同上
如果你懶的寫程式下面是最簡單的批次檔
delete 你安裝防毒軟體的目錄/lpt*.* /yes
copy 上述分享病毒碼的目錄/lpt*.* 你安裝的防毒軟體的目錄 /yes
- 因應別人要求email通知,我使用類似下面指令echo -e "message" | mail -s "subject"
email-address
#檔案中PatternVersion=??? v?? -???為版本
我將其改寫如下
其中病毒碼的目錄放在
$work_dir下,你可以依據你的
要求變更路徑
並將本程式放置於/etc/cron.daily,則每天會更新一次病毒碼
亦可在/etc/cron.d下建立自己的時間管理
程式如下:
2004/03/31新增email通知(藍色部份)
#!/bin/sh
# Trend Autoupdate Script.
# V0.1 Dan Bird. dbird@sghms.ac.uk
# 12/08/2003
OPRINI=opr.ini.$$
export OPRINI
#Email notify when update
#Email_notify=1 enable email
notify otherwise Email_notiyf=0 to turn it off
Email_notify=1
notify_email="your email
address"
notify_time=`date
+%Y-%m-%d-%H:%M`
notify_message="Trend virus
code has been update at $notify_time"
notify_subject='Update Trend
notify'
# source of IScan dat files
FTPSERV="ftp://ftp.antivirus.com/products/pattern/"
# work directory
work_dir="/home/samba/vol1/update_v/trend"
# Get the info on new version...
echo "Checking for latest DAT version..."
wget -q -O /tmp/$OPRINI $FTPSERV/opr.ini
#NEWVER=`grep PatternVersion /tmp/opr.ini.$$ | sed
s/^PatternVersion=//g
| cut -c 1-3`
#2004/08/11修正-PatternVersion
為PatternVersion=,因為多了一個PatternVersionN
NEWVER=`grep "PatternVersion=" /tmp/opr.ini.$$ | sed
s/^PatternVersion=//g | cut -c 1-3`
# 目前的版本所在?
CURRENTVER=`ls $work_dir/*
| grep lpt | tail -1 |
cut -d. -f 2`
if [ "$CURRENTVER" = "" ]
then
CURRENTVER=0
fi
echo "Current version is : $CURRENTVER"
fail () {
trap EXIT
echo "Test run failed --
removing bad Trend data files"
echo "$OUT"
rm -rf $work_dir/lpt*$NEWVER*
exit 1
}
# If our current one is older, download the new one!!!
if [ $CURRENTVER -lt $NEWVER ]
then
echo "Getting new DAT
version : $NEWVER"
wget -q -P /tmp
$FTPSERV/lpt$NEWVER.zip
printf "Testing file for
corruption...."
DATCHECK=`unzip -o -t
/tmp/lpt$NEWVER.zip | grep "No errors"`
if [ "$DATCHECK" != "" ]
then
echo "OK"
rm -f $work_dir/lpt*.*
mv /tmp/lpt$NEWVER.zip $work_dir
printf "installing...."
cd $work_dir
unzip -q -o lpt$NEWVER.zip
echo "DONE"
rm -f /tmp/*.zip
rm -f $work_dir/*.zip
rm -f $work_dir/*.TXT
rm -f $work_dir/*.txt
if [$email_notify=1]
then
notify_message="$notify_messsage \nVersion=lpt$NEWVER.zip"
echo -e $notify_message | mail -s "$notify_subject" $notify_email
fi
else
echo "BAD ARCHIVE"
fi
else
echo "DAT files are upto
date"
fi
rm -f /tmp/$OPRINI
|
client端的程式
- 使用批次檔
win98的client端是使用網域登入
在netlogon建立一個登錄檔
logon.bat 內容為:
delete c:\progra~1\trendp~1\lpt*.* /yes
copy \\smb\vol1\update_v\lp*.* c:\progra~1\trendp~1\ /yes)
其中目地路徑改成你使用的版本路徑
win2000,xp則使用排程來更新,檔案內容同上
- 使用免費autoit的程式
請到google上尋找並下載及安裝
以下是程式碼內容是我所撰寫來複製檔案到trend的目錄
if NOT
FileExists(@ScriptDir&"\"&@computername&".txt") Then
$path=RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TRENDMICRO\PC-CILLIN","Application
Path")
if $path then
filedelete($path&"lpt*.*")
filecopy(@ScriptDir&"\"&"lpt*.*",$path)
FileOpen(@ScriptDir&"\"&@computername&".txt",2)
endif
endif
exit
|
我成功的測試在2003的版本,本程式的功能比批次檔強多來,可讀性也高多了
1.檢查是否有本機器的檔案"電腦名稱.txt",如果有執行下面
2.讀取登錄檔中防毒程式所在路徑
3.刪除舊的病毒碼lpt*.*
4.複製新的病毒碼到應用程式的目錄
5.建立"電腦名稱.txt"到本程式所在的地方,代表已經更新完畢了
上述程式並非及時更新,因此必須重新開機,其病毒碼才可以更新,而autoit的程式編譯完成後,請放置於
$work_dir的目錄內,然後執行該程式就可以了