我的本地机器上有 sh 脚本,如下所示:
// run_script.sh
#!/bin/sh -e
echo "Hello"
是否可以在远程服务器上执行此脚本而不将其复制到?类似于以下内容:
grunt.initConfig({
script_path: '/path/to/run_script.sh',
shell: {
makeDir: {
command: '<%= script_path.sh %>'
}
}
});
我的本地机器上有 sh 脚本,如下所示:
// run_script.sh
#!/bin/sh -e
echo "Hello"
是否可以在远程服务器上执行此脚本而不将其复制到?类似于以下内容:
grunt.initConfig({
script_path: '/path/to/run_script.sh',
shell: {
makeDir: {
command: '<%= script_path.sh %>'
}
}
});
如果脚本部署在远程服务器上,那么您可以通过 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 自制脚本,或者你可以模仿你需要的东西。