使用bash列出ssh会话及其打开的xwindows
我正在尝试编写一个bash脚本,从my.bashrc调用它,它将显示当前客户端计算机上有多少ssh连接,以及每个ssh连接中打开了多少个xwindows 我查看了使用bash列出ssh会话及其打开的xwindows,bash,ssh,x11,Bash,Ssh,X11,我正在尝试编写一个bash脚本,从my.bashrc调用它,它将显示当前客户端计算机上有多少ssh连接,以及每个ssh连接中打开了多少个xwindows 我查看了w的结果,首先得到了包含ssh客户端ip地址的行数(来自客户端的ssh连接数) 然后通过在w中查找$DISPLAY值(通常是localhost:10.0)来获取xwindows的数量 这应该得到在当前连接中打开的xwindows的数量,但是“FROM”值并不总是与“$DISPLAY”值相同 如果客户端有两个shh连接,所有“from”值
w
的结果,首先得到了包含ssh客户端ip地址的行数(来自客户端的ssh连接数)
然后通过在w中查找$DISPLAY值(通常是localhost:10.0)来获取xwindows的数量
这应该得到在当前连接中打开的xwindows的数量,但是“FROM”值并不总是与“$DISPLAY”值相同
如果客户端有两个shh连接,所有“from”值都会显示“localhost:10.0”,但在第二个ssh连接上,“$DISPLAY”是“localhost:11.0”,因此它们不匹配,我的脚本认为第一个连接中有两个xwindows打开,第二个连接中没有,而实际上每个连接都有一个启动。。。因此,出现了混乱
。。。基本上,我希望脚本显示来自当前客户端的连接数,以及从该客户端的当前连接启动的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
其中会话的详细信息为“user@ip:端口>其显示设置“
所有这些的目的是,如果当前会话有0个xwindows打开,那么它将在xwindows中打开3个图形终端,并将它们定位为我喜欢的dev工作方式。终端在xwindows中打开很好,但因为它总是认为在第二个连接中没有xwindows打开,每个打开的终端然后打开另外3个,然后每个终端再打开另外3个,这样循环不断,直到我被终端窗口淹没为止!--
这是一个相当复杂的问题,我不知道该如何表达,尽管我希望答案会很简单。。提前感谢:)我有一个建议:您可以指示SSH在远程端执行打开3个终端的脚本,而不是检查是否有/有多少个终端。这样你就能控制局面。如果需要额外的“常规”SSH连接,请启动一个不调用脚本的连接 使用SSH远程执行脚本非常简单:
ssh -X your.development.box ~/bin/open3terms
其中open3terms
是远程机器上的shell脚本,可根据您的喜好打开3个终端。要打开没有终端的附加SSH连接,只需使用
ssh your.development.box
把它做成两个别名(比如'2dev3'和'2dev'),这样你就省去了大量的打字
ssh -X your.development.box ~/bin/open3terms
ssh your.development.box