2016-02-05 10 views
0

我想寫一個bash腳本來調用我的.bashrc,它將顯示當前客戶端計算機有多少個ssh連接,以及每個窗口中有多少個xwindows都打開這些SSH連接。列出ssh​​會話和他們打開的xwindows bash

我去它通過查看w的結果,首先得到含有SSH客戶端的IP地址(SSH連接的來自客戶端的數量)

numConnectionsFromClient=$(w | grep $(echo "$SSH_CLIENT" | awk '{print $1;}') | wc -l); 

然後讓數量行數通過在w中尋找$顯示值XWINDOWS(通常是本地主機:10.0)

numXwindowsFromCurrentConnection=$(w | grep "$DISPLAY" | wc -l); 

這應該讓XWINDOWS量在當前連接打開,但「FROM」值並不總是相同「$ DISPLAY」值。

如果客戶端有兩個shh連接,所有的「FROM」值都表示「localhost:10.0」,但在第二個ssh連接上「$ DISPLAY」是「localhost:11.0」因此它們不匹配,我的腳本認爲有2個xwindows在第一個連接中打開,而第二個中沒有一個在實際從每個連接開始1 ...因此,混淆。

...基本上我希望腳本顯示來自當前客戶端的連接數,以及從該客戶端當前連接開始的xwindows數量。事情是這樣的:

Welcome blah blah blah 
- number of ssh connections open on your machine: 2 
- number of xwindows open in this ssh session: 1 

甚至更​​好

Welcome blah blah blah 
Current ssh connections from your machine: 
    $detailsOfSession1 - 1 xwindow open 
    $detailsOfSession2 - 1 xwindow open 

其中會議的細節是「用戶名@ IP:端口>的顯示設置」

所有這一切的目的是這樣,如果有0個xwindows在當前會話中打開,它將在xwindows中打開3個圖形終端,並定位它們如何用於開發工作。終端在xwindows中打開的很好,但是因爲它總是認爲第二個連接沒有打開xwindows,所以每個打開的終端打開另外一個3,然後每個終端打開另一個3, m在終端窗口淹沒! -.-

它是一個相當複雜的問題,我不知道如何句話吧,雖然我希望答案是簡單..提前:)謝謝

回答

0

我有一個建議:相當比檢查/有多少終端,您可以指示SSH在遠程端執行腳本,以打開3個終端。這樣你可以控制局面。如果您需要額外的「常規」SSH連接,請啓動一個不調用該腳本的連接。

遠程執行腳本使用SSH很簡單:

ssh -X your.development.box ~/bin/open3terms 

哪裏open3terms是打開的3個端子根據自己的喜好在遠程機器上的shell腳本。要打開不帶端子附加SSH連接,只需使用

ssh your.development.box 

製作成2名的別名,(說「2dev3」 RESP「2dev」)和你自己節省大量的輸入。