在脚本中通过SSH在远程服务器上运行函数

3

我有一个包含几个函数的shell脚本。我需要在两台不同的机器上运行它,每台机器需要运行n次。我可以按照下面提到的方式调用函数并执行吗?还是有其他方法可以完成这个任务?

#!/usr/bash

execCommand () {
  #few statements here
}

getStatus() {
  #few statements here
}

main () {
  execCommand
  getStatus
}

$machine1="machine1"
$machine2="machine2"
$user="username"
$n=2

while [$n -le 2]
 do
   ssh $user@$machine1 'main'
   sleep 100
    ssh $user@$machine2 'main'
    n=$n+1
 done

远程机器不会知道函数main。你必须通过ssh连接发送所有内容。你也可以将文件复制到远程机器上,然后使用ssh执行它。 - fedorqui
可能是Shell脚本:通过ssh运行脚本中的函数的重复问题。 - Thomas8
1个回答

3

没有直接的方法可以做到这一点。但是您可以提取所有函数定义,并将它们作为命令注入到远程命令的开头:

ssh "$user@$machine1" "$(declare -f); main"

请注意,您仍然可能会遇到全局变量和其他资源的问题。

您还可以使用$(declare -f funcname)传递单个函数定义。 - wytten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接