如何从远程位置包含远程shell中的子脚本?

时间:2014-09-14 19:52:41

标签: macos bash ubuntu-14.04

我正在远程Ubuntu服务器上从OSX运行本地bootstrap.sh脚本,该服务器执行一些"如果不是那么"在满足特定条件时加载特定subscript.sh的东西。

我正在运行那个本地脚本:

ssh user@host "bash -s" <~/projects/projectname/bootstrap.sh

我遇到了使用subscript.sh sourced(加载/包含)的问题。

2 个答案:

答案 0 :(得分:1)

你不能。您只是将bootstrap.sh的内容发送到远程shell。它试图在远程计算机上提取subscript.sh,但它并不存在。

您需要将subscript.sh(或两个脚本!)复制到远程计算机,或将subscript.sh的内容插入bootstrap.sh代替{{1} 1}}命令。

答案 1 :(得分:0)

我建议您将“bootstrap.sh”从本地计算机rsync到服务器。您应该可以使用ssh凭据执行此操作。

一个非常酷的实用程序是传输。它是25美元,允许您干净地安装您的服务器,就像它是一个便携式硬盘驱动器(传输也可以做同步)。您所需要的只是ssh凭证,非常用户友好。

如果允许您在服务器上安装,那么我会在其上安装qsub。 (实际上只是检查它是否已安装。)然后只需安装计算机的驱动器,你就可以用qsub提交scrips(我实际上只是在你的mac上制作一个小服务器)。这是我用来从我的OSX计算机上使用linux集群的东西。

或者,您可以从您的osx制作一个小型服务器,并将其安装在您的Linux服务器上。