Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用bash列出ssh会话及其打开的xwindows_Bash_Ssh_X11 - Fatal编程技术网

使用bash列出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”值

我正在尝试编写一个bash脚本,从my.bashrc调用它,它将显示当前客户端计算机上有多少ssh连接,以及每个ssh连接中打开了多少个xwindows

我查看了
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