首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从plink获取返回代码?

从plink获取返回代码?
EN

Stack Overflow用户
提问于 2010-11-04 02:31:33
回答 2查看 13.4K关注 0票数 11

在DOS批处理脚本中,我使用plink在一台远程(也是windows)计算机上运行一条命令。以前,此命令仅在本地计算机上运行,并且依赖于返回代码来确定是否成功。有没有一种方法可以很容易地通过plink获取这些信息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-04 03:15:03

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

参见http://fixunix.com/ssh/74235-errorlevel-capturing-plink.html

票数 6
EN

Stack Overflow用户

发布于 2016-12-09 03:07:33

使用plink 0.66

代码语言:javascript
复制
C:\Code>echo Y | "C:\Program Files (x86)\PuTTY\plink.exe" bob@myserver exit 42

C:\Code>echo %ERRORLEVEL%
42

同样对于@John Wiersba关于何时无法建立连接的担忧,这似乎是固定的

代码语言:javascript
复制
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

还要注意echo Y的管道...这使您能够自动接受服务器指纹(至少可以说有点危险...但是我们的登录服务器是负载均衡的,所以你总是会得到不同的指纹:( )

然而,正如@LeonBloy所指出的那样,plink仍然有一些连接条件返回零退出代码。如果你知道你的退出代码范围,但是你没有一个很好的方法通过一个文件返回到windows。你可以将+3添加到退出代码中(如果你知道退出代码永远不会== 253-255),或者你可以应用逐位or (我建议使用exit $(($?|128)) - in bash)。

或者,如果您不关心确切的退出代码,则可以返回2表示成功,返回0表示失败。因此,如果退出代码不是两个,则表示失败。在bash中应该是:echo $((($?==0) << 1))。这将是到目前为止最健壮的通用解决方案,但是您应该确保您的退出代码被记录下来以便于调试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4090367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档