Plink通过Windowsbatch file处理特定的错误

我试图破译我将如何去尝试捕获我的Windows批处理脚本中的一些error handling从我的Plink命令返回代码,如从服务器“拒绝访问”,这意味着我无法访问它,因此意义我需要获得访问权限。

这里是代码:

@echo on SET userid=root SET passwd=Welcome1%% for /f "delims=" %%i in ('type "ipaddress.txt" ') do ( pushd "C:\Program Files (x86)\PuTTY" echo(======================================== plink.exe -pw %passwd% %userid%@%%i hostname echo(======================================== popd ) 

更新的代码:

 @echo on SET "userid=root" SET "passwd=Welcome1%%" for /f "delims=" %%i in ('type "ipaddress.txt" ') do ( pushd "C:\Program Files (x86)\PuTTY" plink.exe -pw %passwd% %userid%@%%i hostname 2> logging.txt type "logging.txt" findstr /C:"Access denied" "logging.txt" if errorlevel 1 ( echo Connected ) else ( echo Rejected ) popd ) 

我正在打印出login成功的访问,第一个for循环达到这个很好。 我想确保捕获的访问被拒绝,并打印失败的主机IP,但通过IP地址列表继续处理后。

基于下面的细节,我甚至尝试过这样的代码设置,以简单的退出o或1代码为基础:

 @echo on SET "userid=root" SET "passwd=Welcome1%%" for /f "delims=" %%i in ('type "ipaddress.txt" ') do ( pushd "C:\Program Files (x86)\PuTTY" echo(================== plink.exe -pw %passwd% %userid%@%%i hostname if ERRORLELVEL 1 ( echo %%i - Rejected echo(================== ) else ( echo %%i - Connected echo(================== ) popd ) 

Plink返回退出代码0成功或1失败。 所以你不能使用退出代码来检查特定的错误类型。

但是,可以使用findstr命令在Plink的错误输出中搜索特定的错误消息。

 plink.exe -pw %passwd% %userid%@%%i hostname 2> errors.txt type errors.txt findstr /C:"Access denied" errors.txt if errorlevel 1 ( echo Success or different error ) else ( echo Access denied )