GNU/Linux >> Tutoriels Linux >  >> Linux

Comment détecter si le shell est contrôlé depuis Ssh ?

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 ou SSH_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 ?)


Linux
  1. Comment SSH sur Linux à partir d'Android

  2. Comment supprimer le Bom d'un fichier UTF-8 ?

  3. Comment exécuter des scripts Python à partir du shell

  4. Comment vérifier si stdin est /dev/null depuis le shell ?

  5. SSH - Comment inclure la commande -t dans le fichier ~/.ssh/config

Telnet vs SSH :en quoi SSH est-il différent de Telnet ?

Principes de base de Linux :Comment créer et installer des clés SSH sur le shell

Comment changer le shell par défaut dans le système Linux

Comment changer le port SSH dans CentOS

Comment exécuter la commande Vim depuis le shell ?

Encodage en base32 depuis le shell