我有三台服务器用于管理一堆其他客户端服务器。其中一个管理服务器有nagios,另一个有Web代理,另一个有ldap和MySQL服务器。
每当我需要包含一个新的客户端服务器时,我必须登录到服务器A,并创建SQL条目,转到nagios并创建条目,转到Web服务器并添加代理。你得到了照片。我想要的是能够让所有服务器共享一个脚本目录,比如'/ opt / boxes / scripts`,并且有一堆脚本知道它们可以在哪里运行。假设我在服务器A中并运行应该在服务器B上运行的脚本X,它实际上将在服务器B中运行。
有一种简单的方法吗?优选perl基础,因为这是我所知道的一点点。
答案 0 :(得分:1)
一种简单的方法可能是为每台机器上的每个脚本创建一个目录。
在一个目录中,实际脚本运行。 在所有其他目录中,脚本对适当的服务器执行ssh并运行实际脚本。
E.g。
添加客户端的脚本 ssh servera -c servera-addclient-to-sql ssh serverb -c serverb-addclient-to-nagios ssh serverc -c serverc-addclient-to-webproxy
添加知道它们运行位置的脚本也很容易。
以松散的形式
$RunWhere = "XXXX"
$ScriptName = "YYYY"
if `hostname` ne "XXXX" {ssh $RunWhere -c $Scriptname @ARGS ; exit; }
else {
Do the actual stuff
}
所以从任何地方运行,如果这是正确的事情,它在本地运行,否则在正确的位置安装一个安全的shell并在那里运行相同的命令。