从* nix在远程Windows机器上执行exe或bat文件

我试图从我的Linux在云上的远程Windows计算机上执行一个bat文件。 蝙蝠文件启动selenium服务器,然后我的seleniumtesting运行。 我无法在该机器上启动seleniumRC服务器。 我尝试过使用Telnet,但问题是当telnet会话closures时,RC服务器端口也closures。 作为我的代码,我的代码必须启动服务器,所以我尝试了ANT telnet任务,并且还执行te​​lnet的两个端口被closures的shell脚本。

我读了关于Open SSH,用于Linux和cygwin的psexec。 但我没有得到如何使用这些,他们会解决我的问题。

我试图启动一个服务,将启动服务器,但在这种方法我没有得到浏览器可见所有testing在后台运行,因为我的脚本需要屏幕截图浏览器的可见性是必须的。

现在我的问题是使用什么,哪些对我的工作更可取。 而我select的应该由代码执行,它可能是shell,ant或php。

提前致谢。

我更喜欢使用cygwin并使用SSH登录到Windows机器来执行命令。 请注意,默认情况下,cygwin没有安装OpenSSH。

一旦你在Windows机器上运行SSH,你可以像这样在Linux机器上运行一个命令:

ssh user@windowsmachine 'mycommand.exe' 

您也可以设置ssh身份验证密钥,以便您不必每次都输入密码。

我们来看看您提到的各种选项:

  • psexec :这几乎是个人电脑的东西。 此外,您必须确保较新的Windows计算机可以通过默认设置的UAC。 UAC是你在Vista和Windows 7上总是看到的东西,当你试图做一些需要管理员权限的东西的时候。 你可以尝试一下叫做winexe的东西,它是一个可以执行psexec协议的Linux程序,但是我却遇到了麻烦。
  • OpenSSH :有两种主要的SSH,Open SSH是绝大多数网站使用的。 与其他方法相比,SSH有几个优点:
    • SSH是安全的 :您的网络流量是加密的。
    • SSH可以独立于密码 :您可以设置SSH以使用私钥/公钥。 这样,您甚至不必知道远程服务器上的密码。 这使得它更安全,因为您没有将密码存储在各种系统上。 而且,在许多Windows站点中,密码必须每个月左右更改一次,否则帐户被锁定。
    • SSH可以做的不仅仅是执行远程命令 :在SSH上有两个子协议,分别是SCP和SFTP。 这些允许您在两台机器之间传输文件。 由于它们是通过SSH工作的,因此您可以获得包括加密数据包在内的SSH的所有优点以及公钥/私钥保护。
    • SSH在Unix世界中得到很好的实现 :你会发现内置到Ant , Maven和其他构建工具中的SSH客户端。 像CVS,Subversion和Git这样的程序也可以在SSH连接上运行。 不幸的是,Windows World的运行时间不同。 在Windows系统上使用SSH需要像Cygwin这样的第三方软件。
  • Cygwin :Cygwin是一种奇怪的野兽。 它是Windows之上的一个层,允许许多Unix / GNU库在Windows上运行。 它最初是为了让Unix开发者在Windows DOS系统上运行他们的软件而开发的。 但是,Cygwin现在包含一个完整的Unix系统,包括诸如Perl和Python之类的工具,BASH shell以及诸如SSH服务器之类的许多实用程序。 由于Cygwin是开源的,您可以免费下载并运行SSH服务器。 不幸的是,我在Cygwin的SSH服务器上遇到了问题。 另一个问题:如果你正在远程运行程序,你可能想在Windows环境下而不是在Cygwin环境下运行它们。

我建议你从Bitvise看WinSSHD 。 这是SSH服务器的OpenSSH实现,但它不是开源的。 这是每个许可证大约100美元,你需要在每个服务器上的许可证。 但是,这是一个强大的实施,并具有SSH所提供的所有功能。

你可以看看CossH ,它是Cygwin实用程序和OpenSSH服务器的一个包。 这是免费的,所有的开源,但如果你想要一个简单的方法来设置它,你必须支付高级管理员控制台 。 您不需要高级管理员控制台,因为您可以使用Cygwin来设置所有内容,并且附带一个基本的控制台来帮助您。

不是一个非常安全的方式,但是如果你有一个运行的web服务器,你可以使用PHP或ASP来触发一个系统命令。 只要隐藏在www.myserver.com/02124309c9867a7616972f52a55db1b4.php什么的thgat脚本。 并确保命令是固定写在代码中,不通过参数打开…