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
oSSH_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?)