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