Scripting 从plink获取返回码?

Scripting 从plink获取返回码?,scripting,batch-file,plink,errorlevel,Scripting,Batch File,Plink,Errorlevel,在DOS批处理脚本中,我使用plink在远程(也是windows)计算机上运行单个命令。以前,此命令仅在本地计算机上运行,并依赖返回代码来确定是否成功。有没有办法通过plink轻松获取这些信息?这在plink中是不可能的。目前的共识是将远程脚本的退出代码echo保存到日志文件中,然后使用pscp将日志文件传输到本地计算机 请参见。带有0.66的滴答声 C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@myserver

在DOS批处理脚本中,我使用plink在远程(也是windows)计算机上运行单个命令。以前,此命令仅在本地计算机上运行,并依赖返回代码来确定是否成功。有没有办法通过plink轻松获取这些信息?

这在
plink
中是不可能的。目前的共识是将远程脚本的退出代码
echo
保存到日志文件中,然后使用
pscp
将日志文件传输到本地计算机

请参见。

带有0.66的滴答声

C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@myserver exit 42

C:\Code>echo %ERRORLEVEL%
42
此外,对于@John Wiersba关于何时无法建立连接的担忧,这似乎是固定的

C:\CodeMisc>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@garbageservername exit 42
Unable to open connection:
Host does not exist
C:\Code>echo %ERRORLEVEL%
1
还要注意回声Y的管道。。。这使您能够自动接受服务器指纹(至少可以说有点危险……但是我们的登录服务器是负载平衡的,所以您总是会得到不同的指纹:()

然而,正如@LeonBloy所指出的,plink仍然有一些返回零出口代码的连接条件。如果您知道您的出口代码范围,并且没有通过文件与windows通信的好方法,则可以将+3添加到出口代码(如果您知道出口代码永远不会==253-255),或者应用位或(我建议在bash中退出$($?| 128))


或者,如果您不关心确切的退出代码,则可以返回2表示成功,返回0表示失败。因此,非两个退出代码表示失败。在bash中,这将是:
echo$($?==0)为了让今天阅读本文的人受益,可能在编写时是这样,但现在已经不是这样了。当前版本的plink在使用ssh协议时将返回远程退出代码……工作示例和。@richb:不完全正确。当无法建立连接时,plink 0.63成功(退出状态0):-(正如这里的评论中所说,您可以从plink获得一些退出代码。-0:成功-1:失败…这似乎已得到修复…在某种程度上:
>plink.exe-batch-ssh-i key.ppkpi@192.168.1.2使用用户名“pi”。服务器拒绝了我们的密钥>回显%ERRORLEVEL%0