是否可以使用grunt-shell插件执行作为参数传递的sh脚本?

时间:2014-10-29 11:48:22

标签: node.js bash shell gruntjs grunt-shell

我的本​​地计算机上有sh脚本,如下所示:

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

是否可以在远程服务器上执行此脚本而不将其复制到?如下所示:

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

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

1 个答案:

答案 0 :(得分: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自制脚本,或者你可以模仿你需要的东西。