Je souhaite détecter à partir d'un script shell (plus précisément .zshrc) s'il est contrôlé via SSH. J'ai essayé la variable HOST mais c'est toujours le nom de l'ordinateur qui exécute le shell. Puis-je accéder au nom d'hôte d'où provient la session SSH ? Comparer les deux résoudrait mon problème.
Chaque fois que je me connecte, un message indiquant l'heure et l'hôte de la dernière connexion s'affiche :
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
Cela signifie que le serveur dispose de ces informations.
Réponse acceptée :
Voici les critères que j'utilise dans mon ~/.profile
:
- Si l'une des variables
SSH_CLIENT
ouSSH_TTY
est défini, il s'agit d'une session ssh. - Si le nom du processus parent du shell de connexion est
sshd
, c'est une session 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
(Pourquoi voudriez-vous tester cela dans votre configuration shell plutôt qu'au démarrage de votre session ?)