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批处理文件处理特定错误的主要内容,如果未能解决你的问题,请参考以下文章

来自Windows服务的Plink无法找到Pageant

登录可读的 plink 输出(sshlog 太笨拙了)

Plink完成执行远程命令后等待按键

windows下使用emacs+plink编辑远程文件

如何通过批处理文件打开 Windows 防火墙上的端口

我正在尝试通过批处理文件打开 Jmeter,但它给了我一个 Windows 错误