通过ssh远程调用shell源函数



我的函数来源于远程主机A上的.bashrc文件。如果我在远程主机A上使用"which",我将获得函数体作为输出。我需要通过ssh从另一台主机B远程运行它。目前,我所有的尝试都以"命令未找到错误"结束。我已经试着转到了

ssh A  "source /home/user/.bashrc && function "  

,这于事无补。还尝试强制ssh使用-t密钥对伪tty进行assing。两台主机上的SHELL都是bash。主机A上的ssh-localhost仍然保持功能状态可用。

输出:

[user@hostA ~]$ which status
status is a function
status ()
{
    dos -s $*
}

[user@hostB ~]$ ssh hostA " source  /home/user/deploy/bin/_bashrc && status all "
ls: : No such file or directory
bash: status: command not found

基本上,你不能。要做到这一点,您需要将源文件复制到远程主机上,并在那里获取源文件。请注意,您的文件可能也来源于其他一些文件…这几乎就像在远程主机上运行本地程序一样。

诀窍是让远程端将包含函数的文件正确加载到shell环境中。

我用bash发现以下方法有效。。。将您的函数放入远程的.bashrc中:

foo_func()
{
    echo Hello World
}

然后在本地方面:

ssh user@remote bash -l -c foo_func

bash -l指示bash作为登录shell运行(查找启动文件),然后-c告诉shell执行字符串foo_func

最新更新