【发布时间】:2015-11-04 22:53:15
【问题描述】:
我需要通过ssh在大量主机上调用一些代码。
我尝试使用所谓的heredocs。
function verifyFiles {
...
}
...
ssh user@$server <<-SSH
cd $DIRECTORY
verifyFiles
createSum
copyFiles
SSH
ssh user@server2 <<-SSH
cd $DIRECTORY
verifyFiles
verifySums
SSH
...
不幸的是,以这种方式使用的函数在服务器端是未知的。
有没有一种优雅的方式来使用这些函数而不将它们粘贴到每个heredoc 中?
附言。每个主机上的代码调用略有不同,但使用相同的函数集。我真的很想在代码中拥有每个方法定义的 1 个副本。
PS2。当然,如果有更好的方法来调用此代码,我不必使用heredocs。
【问题讨论】:
-
请花一点时间考虑一下这应该如何工作。您已在本地计算机上定义了该函数,但即将远程执行它。
-
当然,我做到了。我明白为什么它不能以这种方式工作。我只是不知道如何在不重复代码的情况下以一种优雅而简短的方式实现我的目标。
-
好像我看错了,你需要一种模板代码而不是文本的方法,所以我之前的评论不合适
-
另一个建议只是传递(通过 ssh)bash 脚本,然后通过 ssh 远程调用调用它们(因此它们将在远程机器上)。虽然不建议这样做,除非你对这些远程机器有绝对的访问权(并且可以容忍某事出错)
-
我必须制作大量不同的文件并将正确的文件复制到正确的远程主机。我真的很想把它放在一个简单的脚本中,你知道,只需运行它。 :)