2012-10-10 51 views
0

我有一系列功能完全相同的服務器,由我的學校提供​​,可運行各種操作系統和硬件配置。大多數情況下,我可以互換使用其中的5種。不幸的是,其他學生傾向於在一些機器上聚集在一起,找到一個沒有陷入困境的人是一種痛苦。可以將命令從服務器輸出到本地機器嗎?

我想什麼是SSH連接到機器上,運行命令:

w | wc -l 

獲得該服務器上的負載的粗略估計,並利用這些信息來選擇影響最小的。一種客戶端負載均衡器。

有沒有辦法做到這一點或達到相同的結果?

+1

難道你不是在問'ssh hostname w | wc -l'?或者'hostA hostB hostC hostD中的hostname;做ssh $ hostname w | wc -l; done'? – lanzz

+0

呵呵,我想我以前從來沒有見過這樣用過。謝謝。 – AdamSpurgin

+1

如果你有'ruptime',試試。實際負載可能比用戶數量更好; 'ssh主機正常運行時間',如果你沒有'ruptime'的話。有關數字的含義,請參閱手冊。 – tripleee

回答

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並自動登錄。

0

您可以使用桌面上的pdsh命令,在您指定的一組機器上運行指定的命令並返回結果。這樣你可以找出最少的一個。這將避免您對每臺機器執行ssh並運行w | wc -l

0

是的。參見例如:

ssh [email protected] "ls /etc | sort" | wc -l 

""內部的部分是遠程完成的。之後的部分是本地的。

相關問題