我试图破译我将如何尝试在我的Windows批处理脚本中捕获一些错误处理,以获取来自我的Plink命令的返回代码,例如" Access Denied"来自服务器,这意味着我无法访问它,这意味着我需要访问它。
以下是代码:
@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
)
答案 0 :(得分:0)
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
)