如何检测我是否已连接到控制台

如何检测我是否已连接到控制台

我想找到一种可靠的方法来在进行网络维护之前检测我是否已连接到控制台。

到目前为止我发现了这个:

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

这是一种可靠的方法吗?

答案1

只需运行tty它本身就会告诉您是否已连接到A控制台——它可以是本地虚拟控制台,但也可以是伪终端。例如:

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

相关内容