0

我的本地机器上有 sh 脚本,如下所示:

// run_script.sh
#!/bin/sh -e
echo "Hello"

是否可以在远程服务器上执行此脚本而不将其复制到?类似于以下内容:

grunt.initConfig({
  script_path: '/path/to/run_script.sh',

  shell: {
    makeDir: {
      command: '<%= script_path.sh %>'
    }
  }
});
4

1 回答 1

1

如果脚本部署在远程服务器上,那么您可以通过 SSH 调用它。但是您需要在远程服务器上启动 SSHD。我建议您配置密钥对(因为您想要非交互式行为并且 openssh 旨在与密码交互)。

ssh me@remote myScript.sh

如果脚本是本地的,那么您可以复制它(scp)然后执行它。或者您可以通过 SSH 执行远程 SHELL 并通过 stdin 发送本地脚本

cat myScript.sh | ssh me@remote bash

在所有情况下,您都必须对您的环境做出强有力的假设(例如 windows 机器上没有 sshd ......)如果您在幕后解释真实的用例,也许我们将能够提出更好的解决方案。

编辑:你想运行部署脚本。在安装软件时,信任谁在执行它(特别是在生产中)很重要。一般情况不简单...

我建议你寻找 juju/chef/puppet/ansible 或其他类似的软件。最后一个是无代理的。它们可以替代你的 grunt/shell 自制脚本,或者你可以模仿你需要的东西。

于 2014-10-30T16:07:28.770 回答