批处理应用:Mcafee手动杀毒脚本

此脚本使用McAfee的SupperDat,进行计算机上病毒的查杀。使用FLASHGET检查SupperDat更新,参考: http://blog.youkuaiyun.com/scz123/archive/2006/11/02/1362573.aspx

20061215: 修改scan.exe运行参数,增加 /PROGRAM (扫描恶意软件)、/NORENAME (不更改文件名)。
     MCAFEE命令行参考手册: http://scz123.googlepages.com/Mcafee5100wpg.pdf

1、使用本地的MCAFEE SUPERDAT来运行的脚本
2、使用局域网上共享的MCAFEE SUPERDAT来运行的脚本

 

 


1、使用本地的MCAFEE SUPERDAT来运行的脚本

@echo off
echo McAfee手动杀毒脚本
echo created by scz 20061101
echo =================================================
echo 建议在管理员环境下运行此脚本,以便能成功杀除病毒
echo =================================================

 

rem 此脚本运行需要McAfee的SupperDat,下载地址:http://www.mcafee.com/apps/downloads/security_updates/superdat.asp?region=cn&segment=enterprise
rem SupperDat下载后,请重命名为Mcafee*.exe(*为任意字符)

if not exist mcafee*.exe (echo 病毒码不存在,无法执行下步操作,请按任意键退出... &goto error)
echo 正在释放病毒码...
for /f "skip=1" %%i in ('dir mcafee*.exe /o-d /b 2^>nul') do (del %%i)
for /f %%i in ('dir mcafee*.exe /b /o-d') do (%%i /e c:/Mcafee & goto start)
:start
echo 启动扫描...

echo @echo off >c:/mcafee/杀毒.bat
echo echo. >>c:/mcafee/杀毒.bat
echo echo ============================================ >>c:/mcafee/杀毒.bat
echo echo McAfee手动杀毒脚本,扫描结束后会自动打开报表 >>c:/mcafee/杀毒.bat
echo echo created by scz 20061031 >>c:/mcafee/杀毒.bat
echo echo ============================================ >>c:/mcafee/杀毒.bat
echo set filename=%%date:-=%%.%%time::=%%.html >>c:/mcafee/杀毒.bat
echo cd /d c:/mcafee >>c:/mcafee/杀毒.bat
echo REM 保留最近10个报表 >>c:/mcafee/杀毒.bat
echo for /f "skip=10" %%%%i in ('dir *.html /o-d /b 2^^^>nul') do (del %%%%i) >>c:/mcafee/杀毒.bat
echo scan /ADL /ANALYZE /PROGRAM /CLEAN /NORENAME /TIMEOUT 15 /WINMEM /HTML "%%filename%%" >>c:/mcafee/杀毒.bat
echo echo 病毒扫描完毕,请按任意键打开报表... >>c:/mcafee/杀毒.bat
echo if exist "%%filename%%" start "" "%%filename%%" >>c:/mcafee/杀毒.bat

cd /d c:/mcafee
start "McAfee VirusScan" cmd /c 杀毒.bat
goto end

:error
pause >nul
:end

 

 


2、使用局域网上共享的MCAFEE SUPERDAT来运行的脚本
@echo off
echo McAfee手动杀毒脚本
echo created by scz 20061101
echo =================================================
echo 建议在管理员环境下运行此脚本,以便能成功杀除病毒
echo =================================================

 

rem 此脚本运行需要McAfee的SupperDat,下载地址:http://www.mcafee.com/apps/downloads/security_updates/superdat.asp?region=cn&segment=enterprise
rem SupperDat下载后,请重命名为Mcafee*.exe(*为任意字符)


echo 正在连接远程计算机(scz)...
net use //10.1.103.10 /user:scz/sczscz sczscz >nul 2>&1
net use x: /del /y >nul 2>&1
net use x: //10.1.103.10/update >nul 2>&1 || (echo 网络异常,无法执行下步操作,请按任意键退出... &goto error)

cd /d x:/
if not exist mcafee*.exe (echo 病毒码不存在,无法执行下步操作,请按任意键退出... &goto error)
echo 正在释放病毒码...
for /f %%i in ('dir mcafee*.exe /b /o-d 2^>nul') do (%%i /e c:/Mcafee & goto start)
:start
net use x: /del /y >nul 2>&1
net use //10.1.103.10 /del /y >nul 2>&1
echo 启动扫描...

echo @echo off >c:/mcafee/杀毒.bat
echo echo. >>c:/mcafee/杀毒.bat
echo echo ============================================ >>c:/mcafee/杀毒.bat
echo echo McAfee手动杀毒脚本,扫描结束后会自动打开报表 >>c:/mcafee/杀毒.bat
echo echo created by scz 20061031 >>c:/mcafee/杀毒.bat
echo echo ============================================ >>c:/mcafee/杀毒.bat
echo set filename=%%date:-=%%.%%time::=%%.html >>c:/mcafee/杀毒.bat
echo cd /d c:/mcafee >>c:/mcafee/杀毒.bat
echo REM 保留最近10个报表 >>c:/mcafee/杀毒.bat
echo for /f "skip=10" %%%%i in ('dir *.html /o-d /b 2^^^>nul') do (del %%%%i) >>c:/mcafee/杀毒.bat
echo scan /ADL /ANALYZE /CLEAN /TIMEOUT 15 /WINMEM /HTML "%%filename%%" >>c:/mcafee/杀毒.bat
echo echo 病毒扫描完毕,请按任意键打开报表... >>c:/mcafee/杀毒.bat
rem echo pause ^>nul >>c:/mcafee/杀毒.bat
echo if exist "%%filename%%" start "" "%%filename%%" >>c:/mcafee/杀毒.bat

cd /d c:/mcafee
start "McAfee VirusScan" cmd /c 杀毒.bat
goto end

:error
pause >nul
:end

<think>好的,用户之前遇到了TM1调用Python脚本执行不了的问题,现在路径都确认没问题,手动在服务器用CMD可以跑通,但TM1调用还是不行。这时候需要进一步排查可能的原因。 首先,用户已经检查了路径,所以可能的问题转向权限和服务账户。TM1服务通常以特定的账户运行,比如本地系统账户或网络服务账户,这些账户可能没有足够的权限访问Python安装目录或脚本目录。需要确认TM1服务账户是否有执行Python和读取脚本的权限,特别是如果脚本需要写入日志或其他文件,还需要写入权限。 接下来,用户可能没有正确转义命令行参数。TM1的ExecuteCommand函数对特殊字符和空格比较敏感,尤其是在路径中包含空格时,必须用双引号包裹。例如,如果Python安装在“Program Files”这样的目录下,没有双引号会导致路径被截断。用户之前给出的例子已经用了双引号,但可能需要检查实际环境中的路径是否有空格或其他特殊字符,导致转义不正确。 另外,工作目录的问题也可能存在。TM1执行命令时可能使用不同的工作目录,导致脚本无法找到依赖文件或输出路径错误。可以在Python脚本中添加当前工作目录的日志,或者在TI中显式设置工作目录。 日志记录是关键。用户之前已经添加了Python脚本的日志,但需要确认日志文件是否成功生成,是否有权限写入。同时,检查TM1的日志(如TM1Server.log)中是否有相关的错误信息,比如ExecuteCommand的返回状态码。状态码非零通常意味着执行出错,可以结合这些代码进一步排查。 防火墙或杀毒软件可能阻止了TM1服务账户启动子进程,比如cmd.exe或python.exe。需要检查服务器的安全软件设置,确保这些进程可以被TM1服务账户调用。 还有可能是环境变量的问题。TM1服务账户的环境变量可能与用户手动执行时的环境不同,尤其是PATH变量可能不包含Python的安装路径。可以在TI中使用绝对路径来调用python.exe,或者在命令中设置环境变量。 最后,考虑使用其他方法调用脚本,比如通过PowerShell或者批处理文件作为中间层,可能会绕过一些权限或转义的问题。用户之前提到了替代方案使用PowerShell,可能需要进一步测试。 总结下来,用户需要逐步检查权限、路径转义、工作目录、日志、防火墙、环境变量等方面,通过详细的日志记录和逐步排查来定位问题所在。</think>--- ### **针对性排查步骤**(按优先级排序) --- #### **1. 确认TM1服务账户的权限与上下文环境** - **关键点**:TM1服务默认以`SYSTEM`或`Network Service`账户运行,与手动登录的账户权限不同。 - **操作**: 1. 打开`services.msc` → 右键`IBM Cognos TM1`服务 → 查看`登录`选项卡 → 记录当前账户(如`Local System`)。 2. **显式赋予权限**: - 对以下目录添加服务账户的**完全控制权限**: - Python安装目录(如`C:\Python39`) - 脚本目录(如`C:\tm1_scripts`) - 脚本输出的日志文件目录(如存在) 3. **测试服务账户权限**: - 使用`psexec`工具(微软官方)以服务账户身份执行命令: ```cmd psexec -i -u "NT AUTHORITY\SYSTEM" cmd.exe ``` - 在打开的CMD窗口中手动运行Python脚本,验证是否成功。 --- #### **2. 检查命令行参数转义与格式** - **关键点**:TM1的`ExecuteCommand`对特殊字符(空格、逗号、引号)敏感。 - **操作**: 1. **强制路径转义**: 确保所有含空格的路径用**双引号包裹**,且外层cmd调用需额外转义: ```plaintext sCommand = 'cmd.exe /c ""C:\Python39\python.exe" "C:\tm1_scripts\irr_calc.py" "-500,100,150,200,250" 0.1"'; ``` 2. **参数传递验证**: 在Python脚本中打印接收到的参数: ```python import sys print("Args received:", sys.argv) # 输出到TM1返回结果 ``` --- #### **3. 捕获TM1调用过程的完整日志** - **关键点**:通过日志定位调用失败阶段。 - **操作**: 1. **TM1日志监控**: - 在`TM1Server.log`中搜索`ExecuteCommand`调用记录: ```plaintext grep "ExecuteCommand" TM1Server.log ``` - 检查返回的`nStatusCode`值: - `0`:成功 - `非0`:错误代码(需对照系统错误码表) 2. **系统进程级监控**: - 使用`Process Monitor`(微软工具): - 筛选`Process Name = cmd.exe` 或 `python.exe` - 观察TM1服务账户是否成功启动进程,以及是否有`ACCESS DENIED`错误。 --- #### **4. 环境变量与工作目录隔离** - **关键点**:服务账户可能缺少Python所需的环境变量。 - **操作**: 1. **显式指定Python路径**: 避免依赖`PATH`变量,使用绝对路径调用`python.exe`。 2. **强制设置工作目录**: 在TI代码中切换目录: ```plaintext ExecuteCommand('cd /D C:\tm1_scripts && "C:\Python39\python.exe" irr_calc.py ...', 1); ``` --- #### **5. 防火墙与安全软件拦截** - **关键点**:企业环境可能限制服务账户启动子进程。 - **操作**: 1. 临时关闭Windows Defender防火墙测试。 2. 检查企业级杀毒软件(如McAfee、Symantec)的进程拦截日志。 --- ### **高频问题对照表** | 现象 | 排查点 | 解决方案 | |-----------------------|--------------------------|-----------------------------------| | 无进程启动痕迹 | 服务账户无权执行`cmd.exe` | 在组策略中赋予账户`执行命令行工具`权限 | | 返回`nStatusCode=5` | 权限拒绝 | 检查脚本目录的ACL权限 | | 参数值截断(如逗号分隔)| 未用引号包裹含逗号参数 | 参数外层添加双引号:`"arg1,arg2"` | | 脚本超时退出 | 默认超时30秒 | 增加超时参数:`ExecuteCommand(..., 60)` | --- ### **替代方案:使用中间批处理文件** 若直接调用失败,可创建代理批处理文件`run_irr.bat`: ```bat @echo off "C:\Python39\python.exe" "C:\tm1_scripts\irr_calc.py" %* ``` 在TI中调用: ```plaintext sCommand = 'cmd.exe /c "C:\tm1_scripts\run_irr.bat "-500,100,150,200,250" 0.1"'; ``` - **优势**:规避TM1参数转义问题,集中处理路径逻辑。 --- ### **最终验证方法** 在TI中强制输出结果到文件: ```plaintext # 在Epilog中: ASCIIOutputOpen('C:\tm1_scripts\TI_result.txt', 1); ASCIIOutputWrite(1, vResult); ASCIIOutputClose(1); ``` 检查文件内容是否包含Python脚本的标准输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值