从Windows远程运行Linux脚本并获取执行结果代码

我有当前的情况来处理:我必须使用ARCServe R15(安装在Windows 2003R2SP2上)安排我公司基于Linux的服务器(在Suse Linux下)的备份。 我知道我有备份软件(ARCServe)的function,可以将预执行脚本添加到备份作业中。 如果脚本失败,ARCServe将被指定不运行备份作业,如果成功,则指定运行。 我没有这个问题。

问题是,我想创build一个Windows脚本(由ARCServe启动)在集群上执行一个Linux脚本: – 如果这个Linux脚本失败,我想我的Windows脚本失败,所以我的备份工作在ARCServe将不会运行 – 如果Linux脚本成功,我希望我的Windows脚本以错误代码0正常结束,所以我的ARCServe作业将正常运行。 我试过创build这个batch file(我们称之为HPC.bat):

回声打开

启动/等待“C:\ Program Files \ PUTTY \ plink.exe”-v -l root -i“C:\ IST \ admin \ scripts \ HPC \ pri.ppk”[cluster_name] / appli / admin / backup_admin

退出%errorlevel

如果我通过双击手动启动.bat,或者在Windows下的命令提示符下启动它,它会正常执行,然后结束。 如果我使它由ARCServe启动,脚本似乎永远不会结束。 我的工作停留在“等待”状态,似乎linux脚本的执行代码没有返回到我的batch file,并且这个不closures。 在我看来,plink只是打开了与Linux的连接,发送执行信号,然后closures连接,所以执行代码不能返回到批处理。 我对吗 ?

是我想要做的事情还是我正在尝试做不可能的事情? 那么,我必须以不同的方式进行吗? 我必须使用PUTTY或CygWin而不是plink? 请帮我头疼

如果你安装了Cygwin,你完全可以像Linux一样在Linux上执行它,也就是用ssh someuser@remoteserver.com somecommand远程运行一个命令ssh someuser@remoteserver.com somecommand

该命令将返回与调用客户端上的返回码相同的命令,如同在远端退出的命令一样。 如果您使用SSH共享密钥进行身份验证而不是密码,则也可以在没有用户交互的情况下编写脚本。