使用存储在远程服务器上的变量

使用存储在远程服务器上的变量

我认为我的任务很复杂。

我有一台机器,我们称之为服务器,还有一大堆其他机器,hostX。它们都运行 Ubuntu 16.04 服务器。每个主机在启动时都运行一个简单的 bash 脚本,但是该脚本当前具有硬编码值。我想在该脚本中使用变量,但变量值应该存储在服务器上的文件/文件中,这样我就可以在一个中心位置更改值并影响主机或一组主机。我很高兴在更改后我必须重新启动或在每个主机上重新启动脚本,这没问题。我的问题是我不知道如何使用远程机器上的变量,我能找到的只是有关在远程机器上运行脚本的信息。我希望它在本地运行,但从远程提取信息。

这就是我脑海中的工作流程。

host1.cfgHost1 启动并查看服务器上的 内容。host1.cfg如下所示:

NAME=John
ADDRESS='10 The High Street'
AGE=25

Host1 运行:

echo server:$HOSTNAME.cfg:$NAME & $ADDRESS & $AGE

或者可能有一个中心HOST.CFG文件:

[HOST1]
NAME=John
ADDRESS='10 The High Street'
AGE=25

[HOST2]
NAME=Mike
ADDRESS='30 The Avenue'
AGE=80

那有意义吗?

答案1

我会为每个包含变量的主机创建一个文件,我们称之为host1.cfg,将它复制到脚本的开头,然后source

rsync user@server:/path/to/host1.cfg .
source host1.cfg

这将覆盖任何现有的host1.cfg主机上现有的任何内容,因此服务器文件的更新将在下次运行时应用。被警告source执行任何命令host1.cfg毫不留情地尤其如果您以 root 身份在主机上运行脚本。有关替代方法(可能更安全的方法,取决于您的设置),请参阅:如何从文件读取变量?

我喜欢rsync,但你也可以使用scpwget或者curl来完成任务。如果您不需要本地副本,您可以使用(格伦·杰克曼):

source <(ssh user@server "cat /path/to/host1.cfg")

相关内容