0

我有一系列由我的学校提供​​的功能相同的服务器,它们运行各种操作系统和硬件配置。在大多数情况下,我可以交替使用其中的 5 个。不幸的是,其他学生倾向于聚集在一些机器上,找到没有陷入困境的机器很痛苦。

我想要的是 ssh 进入一台机器,运行命令:

w | wc -l

粗略估计该服务器上的负载,并使用该信息选择受影响最小的服务器。一种客户端负载均衡器。

有没有办法做到这一点或达到相同的结果?

4

3 回答 3

2

我会把这个放在你的.bashrc档案上

function choose_host(){
hosts="host1 ... hostn"
for host in $hosts
do
  echo $(ssh $host 'w|wc -l') $host
done | sort | head -1 | awk '{print $2}'
}

function ssh_host(){
  ssh $(choose_host)
}

choose_host应该给你你正在寻找的那个。这绝对是矫枉过正,但我​​觉得好玩 :D sort将根据结果排序输出w|wc -l,然后head -1获取第一行并awk打印主机名!你可以打电话ssh_host,应该自动记录你。

于 2012-10-10T20:57:38.803 回答
0

您可以使用桌面上的pdsh命令,该命令在您指定的一组机器上运行指定的命令并返回结果。通过这种方式,您可以找出负载最少的那个。这将避免您ssh对每台机器执行操作并运行w | wc -l.

于 2012-10-10T20:19:55.117 回答
0

是的。参见例如:

ssh me@host "ls /etc | sort" | wc -l

里面的部分""是远程完成的。之后的部分是本地的。

于 2012-10-10T20:37:46.427 回答