Linux下两个远程登陆用户如何共享同一个登陆shell,以实现远程教育或远程协助
在Linux下,有一个基于expect的工具:kibitz可以实现两个登陆用户(可以是同一个用户,例如root但是通过不通的终端登陆的)。因此首先要保证linux安装有tcl和expect两个rpm包。
安装完以后就会发现系统已经有kibitz这个命令了:
[root@mail root]# whereis kibitz
kibitz: /usr/bin/kibitz /usr/share/man/man1/kibitz.1.gz
首先发起共享shell请求乙方输入 w 来察看当前登陆用户:
[root@mail root]# w
17:16:32 up 3 days, 9:00, 2 users, load average: 0.45, 0.37, 0.35
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 219.237.180.135 5:04pm 10.00s 0.04s 0.01s w
root pts/1 219.237.180.135 5:15pm 0.00s 0.04s 0.01s /bin/bash
可以看到发起一方的登陆终端为 pts/0,另外一方为 pts/1
这时候,发起一方运行 :
[root@mail root]# kibitz -tty pts/1 root
asking root to type: kibitz -11946
Escape sequence is ^]
在被邀请一方的终端上会出现以下提示:
[root@mail root]#
Message from root@mail on pts/0 at 17:16 ...
Can we talk? Run: kibitz -11946
EOF
被邀请方在终端输入:
#kibitz --11946
即可实现双方共享同一个shell,无论哪方希望退出, 只需要输入 exit即可退出共享的shell终端。
注意:
需要安装expect-dev才有kibitz包, sudo apt-get install expect-dev
一个用户使用screen -S socketname, 另一个同名的user使用screen -x socketname打开,这样同样可以两个远程用户共享一个shell,但是限制就是是两个用户,必须使用同一个用户名。