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

时间:2012-04-25 14:22:53

标签: windows linux batch-file errorlevel

我有当前的情景来处理: 我必须使用ARCServe R15(安装在Windows 2003R2SP2上)安排我公司基于Linux的服务器(在Suse Linux下)的备份。 我知道我有能力在我的备份软件(ARCServe)中为我的备份作业添加前/后执行脚本。 如果脚本失败,则指定ARCServe不运行备份作业,如果成功,则指定运行。我对此没有任何问题。

问题是,我想制作一个Windows脚本(由ARCServe启动),用于在集群上执行Linux脚本: - 如果此Linux脚本失败,我希望我的Windows脚本失败,因此我在ARCServe中的备份作业将无法运行 - 如果Linux脚本成功,我希望我的Windows脚本正常结束,错误代码为0,因此我的ARCServe作业将正常运行。 我已经尝试创建这个批处理文件(让我们称之为HPC.bat):

echo ON

启动/等待“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脚本的执行代码没有返回到我的批处理文件,而且这个代码没有关闭。 在我看来,正在发生的事情是plink只是打开与Linux的连接,发送sript执行信号,然后关闭连接,因此执行代码无法返回到批处理。我是对的吗?

我想做什么或者我想做一些不可能的事情? 那么,我必须采取不同的行动吗? 我是否必须使用PUTTY或CygWin而不是plink? 拜托,这令我头疼......

1 个答案:

答案 0 :(得分:1)

如果您安装Cygwin,您可以像在Linux到Linux上那样完成它,即远程运行ssh someuser@remoteserver.com somecommand

命令

此命令将在调用客户端上返回相同的返回码,因为该命令在远程端退出。如果使用SSH共享密钥进行身份验证而不是密码,则无需用户交互即可编写脚本。

相关问题