LDAP - 跨多个VM的SSH脚本

时间:2013-07-29 19:17:05

标签: linux bash ssh tmux

所以我正在使用具有多个VM的路由器。它使用LDAP进行设置,以便每个VM具有相同的文件,设置等。但是,它们分配了不同的核心,安装了不同的库和软件包。我不想单独登录每个VM并运行命令,而是将脚本放在.bashrc中进行自动化。

所以我到目前为止:

export LD_LIBRARY_PATH=/lhome/username
# .so files are in ~/ to avoid permission denied problems

output=$(cat /proc/cpuinfo | grep "^cpu cores" | uniq | tail -c 2)

current=server_name

if [[ `hostname-s` != $current ]]; then
 ssh $current
fi

/path/to/program --hostname $(echo $(hostname -s)) --threads $((output*2))

每个VM在登录后都会执行此脚本,因此我必须检查当前VM是否具有主机名以避免SSH循环。想法是运行程序,然后退出到原点以恢复脚本。问题当然是该过程将在退出时死亡。

有人建议我在主机名数组上使用TMUX,但我不知道如何处理它。

1 个答案:

答案 0 :(得分:1)

您可以安装clusterSSH,设置主机名列表,并从打开的终端窗口执行操作。即使在注销后,您也可以使用screen/tmux/nohup来允许进程继续运行。

然而,如果您仍想使用脚本编写,可以安装tmux,然后使用:

while read host; do
    scp "script_to_run_remotely" ${host}:~/
    ssh ${host} tmux new-session -d '~/script_to_run_remotely'\; detach
done < hostlist

注意hostlist应该是主机名列表,每行一个。