GNU/Linux >> Linux Esercitazione >  >> Linux

Come rilevare se la shell è controllata da Ssh?

Voglio rilevare da uno script di shell (più specificamente .zshrc) se è controllato tramite SSH. Ho provato la variabile HOST ma è sempre il nome del computer che esegue la shell. Posso accedere al nome host da cui proviene la sessione SSH? Confrontare i due risolverebbe il mio problema.

Ogni volta che accedo c'è un messaggio che indica l'ora dell'ultimo accesso e l'host:

Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max

Ciò significa che il server ha queste informazioni.

Risposta accettata:

Ecco i criteri che utilizzo nel mio ~/.profile :

  • Se una delle variabili SSH_CLIENT o SSH_TTY è definito, è una sessione ssh.
  • Se il nome del processo padre della shell di accesso è sshd , è una sessione ssh.
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
  SESSION_TYPE=remote/ssh
# many other tests omitted
else
  case $(ps -o comm= -p $PPID) in
    sshd|*/sshd) SESSION_TYPE=remote/ssh;;
  esac
fi

(Perché vorresti testarlo nella configurazione della tua shell piuttosto che nell'avvio della sessione?)


Linux
  1. Come cercare nel Web da terminale su Linux

  2. Come SSH su Linux da Android

  3. Rileva il sistema Init usando la shell?

  4. Come rimuovere la Bom da un file Utf-8?

  5. Come recuperare la chiave pubblica da una chiave privata Ssh?

Telnet vs. SSH:in che cosa SSH è diverso da Telnet?

Nozioni di base su Linux:come creare e installare chiavi SSH sulla shell

Come modificare la shell predefinita nel sistema Linux

Come assegnare l'output di un comando a una variabile di shell?

Come eseguire script Python dalla shell

Come modificare la porta SSH in CentOS