小编Jon*_*hoi的帖子

检测当前终端是否通过mosh

我试图找出一种方法来检测当前终端/连接(以及在 tmux 会话下)是否通过mosh

这个线程中,我找到了我当前所在的伪终端会话:

$ tty
/dev/pts/69
Run Code Online (Sandbox Code Playgroud)

所以,我需要一些关于产生这个伪终端的过程的信息,或者作为孩子拥有这个 tty。有了这些信息,也许我可以确定它是来自sshd还是mosh。但是我该怎么做呢?

另一个挑战:如果当前 shell在 tmux 下,检索到的 tty 可能与 sshd/mosh-server 信息不匹配,因为 tmux 还分配了另一个伪终端。不管 tmux 会话是如何创建的,我都需要区分我当前的连接是 SSH 还是 mosh。怎么可能?

一些试验:

(1) 对于SSH,可以找到sshd匹配tty的进程:

$ ps x | grep sshd | grep 'pts\/27'
 5270 ?        S      0:00 sshd: wookayin@pts/27
Run Code Online (Sandbox Code Playgroud)

所以我可以知道当前的连接是通过 SSH 连接的。但是,通过mosh,我找不到任何相关信息。

(2) 使用环境变量,例如SSH_CLIENTSSH_TTY可能不起作用,因为 ssh/mosh 都设置了这些变量,在 tmux 会话中甚至是错误的。

ssh tty mosh

5
推荐指数
1
解决办法
1229
查看次数

标签 统计

mosh ×1

ssh ×1

tty ×1