我正在尝试远程调用在不同服务器上的 shell 脚本中定义的函数,并让该函数在远程服务器上运行。
希望下面的例子能说明这一点。
在 host2 我有两个脚本。
实用程序.sh:
f ()
{
hostname
}
测试.sh:
. utils.sh
f
在 host2 上,我可以执行以下操作:
host2:/tmp# ./test.sh
host2
从 host1,我希望能够调用该函数f
并让它在 host2 上运行(所以在这个例子中,它会打印“host2”,因为f
只是调用hostname
)。但是,实际上我收到以下错误:
host1:~# ssh root@host2 /tmp/test.sh
/tmp/test.sh: line 1: utils.sh: No such file or directory
/tmp/test.sh: line 2: f: command not found
因此,很明显 test.sh 实际上是在 host1 上运行 - 这就是为什么它找不到 /tmp/utils.sh (因为它只在 host2 上)以及相应的为什么 if can't run function f
。
是否可以在远程 shell 脚本中调用函数,并让它在远程机器上运行?或者我还能做些什么来实现类似的目标?
谢谢 :-)