Plink通过Windows批处理文件处理特定错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Plink通过Windows批处理文件处理特定错误相关的知识,希望对你有一定的参考价值。
我试图破译我将如何尝试在我的Windows批处理脚本中捕获一些错误处理,以获取来自我的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
)
我正在寻找打印成功登录的访问,第一个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
command在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
)
以上是关于Plink通过Windows批处理文件处理特定错误的主要内容,如果未能解决你的问题,请参考以下文章