so tired

仮想化、ハードウェアなどの技術メモ

SAVのウィルス定義の日付取得バッチを作った

後輩がチームメンバーのPCのウィルス定義日付を確認して回るという
苦行をやらされていてかわいそうだったので日付取得バッチを作った。
以下の環境で正常動作を確認。
OS:WindowsXP Pro SP3
SAV:Symantec AntiVirus Corporate Edition 10.1.8.8000
DOMAIN/WORKGROUP:WORKGROUP

@echo off
rem 対象PCのコンピュータ名orIPアドレス(AAAAA)、用途(BBBBB)、ID(CCCCC)、パスワード(DDDDD)をgetVirusDATversionに渡す
call :getVirusDATversion AAAAA BBBBB CCCCC DDDDD
pause
goto :EOF

rem バージョン取得処理 %1=AAAAA、%2=BBBBB、%3=CCCCC、%4=DDDDD
:getVirusDATversion
ping %1 > nul 2> nul
if %ERRORLEVEL% NEQ 0 (
echo %2 に疎通できません
)
net use \\%1 /user:%1\%3 %4 > nul 2> nul
if %ERRORLEVEL% NEQ 0 (
echo %2 に接続できません
)
set VirusDATversion=
if exist "\\%1\c$\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat" (
for /F "delims== tokens=2" %%i in (
'type "\\%1\c$\Program Files\Common Files\Symantec Shared\VirusDefs\definfo.dat"^|find "CurDefs="'
) do set VirusDATversion=%%i
)
if "%VirusDATversion%" NEQ "" (
set VirusDATversion=%VirusDATversion:~,4%/%VirusDATversion:~4,2%/%VirusDATversion:~6,2% %VirusDATversion:~9%
exit /b 0
) else (
set VirusDATversion=unknown
exit /b 1
)
echo %2のパターンファイルのバージョンは%VirusDATversion%です
net use \\%1 /d > nul

一応call行を増やせば複数台いけるけど、当然接続用のユーザーは考慮する必要有り。
ドメイン環境だったらnet useいらないと思う。

まあそもそも管理コンソール見れない環境でウィルス定義を取得したいという状況があまりないか・・。
ていうかまだSAV使っていることが稀かも・・。

(1/11追記)
エラー処理を追加。
あとやっぱりアカウント、パスワードは引数で渡すことに。

【参考】
Symantec AntiVirus のバージョンを取得するバッチ処理