Linux: come rilevare se un computer è controllato tramite console seriale
Domanda
Come potrei rilevare a livello di codice se una macchina Linux è controllata da un utente che ha effettuato l'accesso usando una console seriale? Farei il controllo tramite BASH.
Soluzione
Il comando who
ti darà un elenco di utenti che hanno effettuato l'accesso e da dove hanno effettuato l'accesso.
Ad esempio:
~$ 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)
L'output di chi indica " come " gli utenti sono connessi. La console dell'utente Mary è agganciata a tty7
La tty indica che Mary è connessa fisicamente tramite una console seriale. Quindi Mary ha la capacità di controllare il computer attraverso la console seriale.
Per determinare cosa sta facendo, dovresti guardare il file her.bash_history. Di solito questo è sotto /home/mary/.bash_history.
Se vuoi registrare a lungo termine tutti i comandi che arrivano su una console seriale (aka tastiera collegata a quella macchina), modificherei il driver seriale di Linux per registrare tutti gli input e output. Non so quanto sarebbe difficile.
Altri suggerimenti
Prova ad analizzare finger . Di solito è possibile raccogliere indirizzi IP / DNS. Non ho mai visto una connessione seriale, quindi non ho potuto dire se mostra una connessione seriale o meno.
Puoi usare who dalla riga di comando.
Se vuoi controllarlo su un computer locale ...
$ who >> log.txt
E controllando se c'è qualche riga in più in quel file, o qualunque cosa tu voglia.
Nel caso in cui intendi verificare se lo script viene eseguito su un terminale tramite un'interfaccia seriale, puoi semplicemente eseguire tty e controllare il nome del dispositivo.