2010-08-26 14 views
0

Je veux savoir s'il existe des méthodes pour trouver le type de connexion actuel au serveur distant (rsh ou ssh?). L'environnement est Solaris 9, SuSE linux, csh.Comment déterminer le type de connexion à distance actuel? (rsh ou ssh)

+0

Quel est le serveur et qui est le client? Voulez-vous le faire de manière interactive ou avez-vous un script sur le serveur? –

+0

Salut, Matthew. SuSE est la connexion au serveur. Mieux vaut avoir un script ou quelque chose comme "echo $ CONNECTION_TYPE". Est-ce possible? –

Répondre

1

Vous pouvez utiliser echo $SSH_CONNECTION;. SSH va définir cette variable d'environnement sur le serveur distant. Il contient l'adresse IP du client, le port client, l'adresse IP du serveur et le port du serveur. Il ne doit être défini que pour les connexions SSH.

+0

WoW, c'est tout! Merci, Matthew :) –

0

Réponse courte: Test "$SSH_CLIENT$SSH2_CLIENT$SSH_TTY"ET qui est connecté ET qui est votre parent.

Le projet liquidprompt a a (bash/zsh) function de le faire, qui ressemble à:

# If this is an SSH connection. 
    if [[ -n "$SSH_CLIENT$SSH2_CLIENT$SSH_TTY" ]] ; then 
     # This is SSH. 
    else 
     # Get the host part of the who am i command. 
     local sess_src="$(who am i | sed -n 's/.*(\(.*\))/\1/p')" 
     # Get the name of the parent process. 
     local sess_parent="$(ps -o comm= -p $PPID 2> /dev/null)" 
     if [[ -z "$sess_src" && "$sess_src" = *"shepherd" ]] ; then 
      # This is a qrsh connection (cf. Grid Engine). 
     elif [[ -z "$sess_src" || "$sess_src" = ":"* ]] ; then 
      # This is a local connection. 
     elif [[ "$sess_parent" = "su" || "$sess_parent" = "sudo" ]] ; then 
      # This is a su/sudo 
     else 
      # This (may be) telnet. 
     fi 
    fi