【问题标题】:Running remotely Linux script from Windows and get execution result code从 Windows 远程运行 Linux 脚本并获取执行结果代码
【发布时间】:2012-04-25 14:22:53
【问题描述】:

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

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

回声开启

开始 /wait "C:\Program Files\PUTTY\plink.exe" -v -l root -i "C:\IST\admin\scripts\HPC\pri.ppk" [cluster_name] /appli/admin/备份管理员

退出%errorlevel%

如果我通过双击这个 .bat 手动启动它,或者在 Windows 下的命令提示符下启动它,它会正常执行然后结束。 如果我让它由 ARCServe 启动,脚本似乎永远不会结束。 我的工作处于“等待”状态,似乎linux脚本的执行代码没有返回到我的批处理文件中,并且这个没有关闭。 在我看来,发生的事情是 plink 只是打开与 Linux 的连接,发送 sript 执行信号,然后关闭连接,因此无法将执行代码返回给批处理。我说的对吗?

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

【问题讨论】:

  • 也许应该在 serverfault.com 上询问

标签: windows linux batch-file errorlevel


【解决方案1】:

如果你安装 Cygwin,你可以像在 Linux 到 Linux 上做的那样做,即用ssh someuser@remoteserver.com somecommand远程运行命令

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

【讨论】:

  • 这也是我的诱惑。可能还想进一步研究使用 expect 来判断远程任务的成功。
  • 好的,我用 CygWin 试试看。
  • 好的,我会用 CygWin 试一试。但是参考这个链接stackoverflow.com/questions/4090367/get-return-code-from-plink,它应该不起作用。我轻轻地看到了解决方案的开始......
  • plink 与 cygwin 是分开的。 Cygwin 可以为您提供与 linux 中相同的 OpenSSH 工具。 Plink 是一个不同的软件。
猜你喜欢
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
相关资源
最近更新 更多