如何在远程主机上运行bash函数()? 在Ubuntu中

我正在运行一个bash脚本,但是当我尝试在远程机器上运行函数时,它说

 bash: keyConfig: command not found 

这是我的脚本:

 keyConfig() { sed -i.bak -r "/^$1/s/([^']+')([^']+)('.*)/\1$2\3/" $3 } remoteExecution() { ssh ppuser@10.101.5.91 " keyConfig $1 $2 $4 " } remoteExecution 

Solutions Collecting From Web of "如何在远程主机上运行bash函数()? 在Ubuntu中"

针对该错误提示:

当你这样做

 ssh ppuser@10.101.5.91 " keyConfig $1 $2 $4 " 

你实际上是试图在远程机器上执行一个命令keyConfig 10.101.5.91这当然不存在:

2解决问题的方法

1)在包含keyConfig代码的keyConfig上创建一个具有相同名称的脚本

要么

2)执行下面的代替功能

 ssh ppuser@10.101.5.91 "sed -i.bak -r "/^$1/s/([^']+')([^']+)('.*)/\1$2\3/" $3" 

请注意,根据您使用的sed语法,您可能需要添加几次转义

简单的解决方法:

 remoteExecution() { ssh ppuser@10.101.5.91 "`declare -f keyConfig`; keyConfig $1 $2 $4" } 

在这里, keyConfig只调用远程系统上可用的sed命令。 如果keyConfig已经调用了任何本地函数,那么还要在declare -f的命令行中添加该函数。

这样,本地shell中的函数keyConfig被定义在通过ssh产生的远程shell中,然后被调用。

keyConfig未在主机“10.101.5.91”中定义为命令

您可以尝试在主机“10.101.5.91”中定义一个名为keyConfig的bash脚本,并在ppuser PATH中添加该脚本。