Linux: como detectar se um computador está sendo controlado através do console serial
Pergunta
Como eu poderia detectar programaticamente se uma máquina Linux está sendo controlada por um usuário que fez login usando um console serial? Eu estaria fazendo a verificação da Bash.
Solução
o who
O comando fornecerá uma lista de usuários conectados e de onde eles estão conectados.
Por exemplo:
~$ who
john pts/1 2009-07-29 10:06 (ourcompanyvpnserver.org)
mary tty7 2009-07-29 10:11 (:0)
frank pts/2 2009-07-27 12:10 (att.net)
jim pts/4 2009-07-28 14:51 (comcast.net)
A saída de quem indica "como" os usuários estão conectados. tty7
O TTY indica que Maria é registrada fisicamente por meio de um console serial. Portanto, Maria tem a capacidade de controlar o computador através do console serial.
Para determinar o que ela está fazendo, você precisaria olhar para ela.bash_history arquivo. Geralmente, isso está em /home/mary/.bash_history.
Se você deseja log de longo prazo todos os comandos que vêm em um console serial (também conhecido como teclado anexado a essa máquina), eu modificaria o driver serial do Linux para registrar toda a entrada e saída. Eu não sei o quão difícil seria isso.
Outras dicas
Try parsing finger. You can usually pick up IP/DNS addresses. Havn't ever seen a serial connection, so I couldn't say if it displays a serial connection or not.
You can use who from the command line.
If you want to check it in a local computer...
$ who >> log.txt
And checking if there's any extra line in that file, or whatever you want.
In case you mean to check if your script runs on a terminal via a serial interface, you can just execute tty and check the device name.