Sample Header Ad - 728x90

Detect whether the current terminal is through mosh or not

8 votes
1 answer
2107 views
I am trying to figure out a way to detect whether the current terminal/connection (and under a tmux session as well) is through **mosh** or not. From [this thread](https://unix.stackexchange.com/questions/235485/how-do-i-know-which-mosh-client-i-am) , I found which pseudo-terminal session I am currently on: $ tty /dev/pts/69 So, I need to some information of the process that spawned this pseudo-terminal, or owns this tty as a children. With the information, perhaps I might be able to determine whether it is from sshd or mosh. But how can I do that? *Another challenge*: If the current shell is **under tmux**, the retrieved tty might not match the sshd/mosh-server information since tmux also allocates another pseudo-terminal. Regardless of how the tmux session was created, I'll need to distinguish my current connection is from SSH or mosh. How will it be possible? ### Some trials: (1) For SSH, it was possible to find the sshd process that matches the tty: $ ps x | grep sshd | grep 'pts\/27' 5270 ? S 0:00 sshd: wookayin@pts/27 So I can know the current connection is through SSH. However, through mosh, I could not find any relevant information. (2) Using environment variables like SSH_CLIENT or SSH_TTY might not work because both ssh/mosh set these variables, and it is even wrong inside a tmux session.
Asked by Jongwook Choi (1872 rep)
Oct 1, 2017, 05:26 PM
Last activity: Sep 29, 2018, 12:06 PM