Linux

如何檢測我是否在控制台上連接

  • October 5, 2022

我想在進行網路維護之前找到一種可靠的方法來檢測我是否在控制台上連接。

到目前為止,我發現了這個:

$ tty | grep /dev/tty
/dev/tty2 # Connected on the console
$ ssh localhost tty | grep /dev/tty
$ # Remotely connected

這是一種可靠的方法嗎?

單獨執行tty會告訴您是否連接到控制台——它可能是本地虛擬控制台,但也可能是偽終端。例如:

ssh -t localhost tty
/dev/pts/9

-t標誌的意思是“分配一個 tty”,這是互動式 ssh 會話的預設行為。

所以你不能只問“我是否連接到tty?”,而是可以根據tty命令返回的設備做出決定。就像是:

case "$(tty)" in
 /dev/tty[0-9])
   echo "I am on a local console."
   ;;

 /dev/ttyS[0-9]|/dev/ttyACM[0-9]|/dev/ttyUSB[0-9])
   echo "I am on a serial console."
   ;;

 *)
   echo "I am not on a local console"
esac

引用自:https://unix.stackexchange.com/questions/719909