脚本编程

Symantec更新包[XP-i32]在线下载脚本

Jager · 12月26日 · 2013年 · · · · 1666次已读

编写初衷:公司用的是Symantec杀毒软件,在客户端更新失败的时候,维护人员总是需要手动去下载离线更新包然后到客户端执行,非常麻烦!于是写了这个脚本丢到服务器上建立任务计划,客户端要更新的时候直接脚本调用\\server\symantec\update\20131225-002-i32.exe即可。

脚本名称:Symantec更新包[XP-i32]在线下载工具
脚本功能:主要用于Symantec服务器离线包的自动下载,适用于使用symantec杀毒的企业运维
脚本使用:先在服务器上测试运行是否正常,若无问题直接新建任务计划每天执行一遍脚本,即可保证服务器离线包为最新。
脚本说明:
1.此脚本需要和命令行下载工具wget.exe组合使用(点击下载);
2.默认本地路径为D:\Symantec\Update,若要修改请自行搜索替换(请注意空格)
3.服务器需要联外网功能,若实际情况不允许,可将此脚本丢到能联网的机器上,再加上自动上传代码即可(已略,有需求的请留言)

脚本代码:

@echo off   
color 2f    
mode con cols=85 lines=22   
title Symantec更新包[XP-i32]在线下载工具 Ver 1.3 By Mars.Ge   
pushd "%~dp0"  
rem 检查是否重复打开工具:   
cls   
tasklist | findstr /i "wget.exe" >nul && taskkill /f /im wget.exe >nul 2>nul   
for /f %%z in ('dir /b "%~dp0"^|FIND "-"') do (   
    if exist %%z del /s /q /f %%z >nul 2>nul   
    )   
mode con cols=85 lines=22   
cls   
rem 获取更新包页面源代码   
echo ----------%date%,Symantec更新包下载记录---------->>Sym_Update.log  
echo Begin:>>Sym_Update.log  
if exist cs-n95.html del /S /Q /F cs-n95.html >nul   
if exist csn95.html del /S /Q /F csn95.html >nul   
rem 若不需要使用代理下载,请删除双引号之间的内容   
wget -e "http_proxy=http://192.168.2.1:3128/" http://www.symantec.com/avcenter/download/pages/CS-N95.html   
cls   
rem 对比本地更新包与官网   
    setlocal enabledelayedexpansion    
    for /f tokens^=2*^ delims^=^" %%i in ('type cs-n95.html ^| findstr /v "v5i32" ^| findstr /i "i32.exe"') do (  
        set address=%%i  
        for /f "tokens=4 delims=/-" %%a in ("!address!") do set F_date=%%a  
        )  
 
        for /f "tokens=1 delims=-" %%f in ('dir /b "D:\Symantec\Update" ^| FIND "-"') do (set O_date=%%f)  
 
if !F_date! NEQ !O_date! (echo 发现新版Symantec更新包,下载中,请勿关闭窗口......   
    echo !time:~0,8!===^>发现新版Symantec更新包[!f_date!],开始下载......>>Sym_Update.log  
         rem 若不需要使用代理下载,请删除双引号之间的内容  
    wget -c -e "http_proxy=http://192.168.2.1:3128/" "!address!"  
    echo !time:~0,8!===^>Symantec更新包[!f_date!]下载完毕!>>Sym_Update.log  
    echo !time:~0,8!===^>正在重命名旧的更新包,以便更新失败时恢复...>>Sym_Update.log  
 
    for /f %%m in ('dir /B /S "D:\Symantec\Update"^|FIND "-"') do set Oldpath1=%%m & move /y "%%m" "D:\Symantec\Update\oldPath.exe" >nul  
        if exist cs-n95.html del /S /Q /F cs-n95.html >nul  
        if exist csn95.html del /S /Q /F csn95.html >nul  
        echo !time:~0,8!===^>正在移动更新包.....>>Sym_Update.log  
        for /f %%z in ('dir /b "%~dp0"^|FIND "-"') do set newpath=%%~nxz & copy /y %%z "D:\Symantec\update"  
        if exist "D:\Symantec\update\%newpath%" echo !time:~0,8!===^>移动成功!>>Sym_Update.log  
        if not exist "D:\Symantec\update\%newpath%" move /y "D:\Symantec\Update\oldPath.exe" "%Oldpath1%" >nul && echo !time:~0,8!===^>移动过程  
 
出现未知错误,未成功更新更新包. >>Sym_Update.log && goto ending  
                echo !time:~0,8!===^>正在移除旧版更新包.....>>Sym_Update.log  
        if exist "D:\Symantec\Update\oldPath.exe" del /s /q /f "D:\Symantec\Update\oldPath.exe"   
        taskkill /f /im wget.exe 2>nul 1>nul   
        echo !time:~0,8!===^>恭喜!已成功更新至!F_date!.>>Sym_Update.log  
        if exist cs-n95.html del /S /Q /F cs-n95.html >nul   
        if exist csn95.html del /S /Q /F csn95.html >nul   
        goto ending   
            ) else (echo !time:~0,8!===^>经检测,官网和本地的Symantec更新包日期均为!o_date!,无需更新. >>Sym_Update.log  
                echo= >>Sym_Update.log  
                if exist cs-n95.html del /S /Q /F cs-n95.html >nul   
                if exist csn95.html del /S /Q /F csn95.html >nul   
                                )   
  
:ending   
echo End. >>Sym_Update.log  
echo= >>Sym_Update.log  
echo= >>Sym_Update.log  
exit

此脚本下载的更新包支持一下Symantec版本:
Norton AntiVirus / Norton Internet Security 2007
Norton 360 version 1.0
Norton SystemWorks (all versions)
Symantec Mail Security for Domino v 5.x
Symantec Mail Security for Domino v 7.x
Symantec Mail Security for Domino (32-bit) v 8.0.x
Symantec Mail Security for Microsoft Exchange
Symantec Scan Engine 5.x for Windows
Symantec AntiVirus for Caching/Messaging/NAS for Windows
其他版本需要自行修改脚本链接地址(需要分析下载页面,有需求的可以留言)。

Ps:估计很多朋友也用不到,但是还是贴上来了,只要代码中能有供你参考的内容就好!

0 条回应