Newsgroup: it.comp.os.linux.development
Titolo: Indirizzo IP di una connessione SSH

Ciao a tutti.
Ho un problema (mannò ???? massì !!!)
Dunque: avvio in remoto una mia applicazione X attraverso apposito
tunnel ssh.
Ora, volendo acquisire da programma l'indirizzo IP dal quale ho aperto
il suddetto
tunnel, quale strada posso percorrere ? Ho googlato inutilmente  e ho
spremuto i
miei (pochi) neuroni residui senza risultato praticabile. Qualche
dritta ?
GraSSie
                                     Antonio

 quale ho aperto il suddetto tunnel, quale strada posso percorrere ?
nel mio .bash_profile ho queste linee, che ci azzeccano a ricostruire
il nome dell'host remoto da cui e' avvenuto il login.  prova ad usare
qualche variante sul tema...
if [ -t 0 ]
then                            # We have a controlling terminal
  # Tries to figure out a correct DISPLAY environment variable
  if [ -n "$DISPLAY" ]
  then
    # if DISPLAY is set, we assume it is also valid; if it is not,
    # the user may always change it later ($DISPLAY is printed at
    # the end of the login procedure).
    REMOTE="${DISPLAY%%:*}"
  else
    temp0=$(who am i | awk '{print $2}')
    if [ -z "$temp0" -o "$temp0" = "console" ]
    then
      REMOTE="localhost"
      DISPLAY=":0.0"
    else
      temp1=$(who --lookup | grep "$temp0 " | uniq | awk '{print $6}')
      # Note this space_________________,^
      if [ -n "$temp1" ]
      then
        temp2=$(echo $temp1 | sed -e 's/(//' -e 's/)//')
        # If the host name (in temp2) is "
xxx.pd.infn.it
" ,
        # let's use just "xxx" (we are on the local domain).
        temp3=$(echo $temp2 | cut -d. -f2)
        if [ "$temp3" = "pd" ]
        then
          REMOTE=$(echo $temp2 | cut -d. -f1)
        else
          REMOTE="${temp2%%:*}"
        fi
        DISPLAY="${REMOTE}:0.0"
        unset temp2 temp3
      else
        REMOTE=""
        DISPLAY=":0.0"
      fi
      unset temp1
    fi
    unset temp0
  fi
  export REMOTE DISPLAY
  echo "DISPLAY is now: $DISPLAY"
  date '+System time: %A %d %B %Y, %T%n'
fi                              # if [ -t 0 ]
-- 
|   Maurizio Loreti -- 
ROT13:ybe...@cq.vasa.vg
   |  (@_
| Un. of Padova, Dept. of Physics, Padova, Italy |  //\
|     
http://www.pd.infn.it/~loreti/mlo.html
     |  V_/_

 qualche variante sul tema...
[cut]
Mille grazie per la risposta, Maurizio. Ho estratto il succo dal tuo
script inserendolo in una pipe all'interno della mia applicazione.
Tuttavia la cosa al momento non funge: il "who am i" (che in
effetti riporta essattamente l'informazione che mi occorrre)
restituisce la sua stringa solo nel caso che  il programma che ospita
la
pipe che esegue appunto il who am i venga lanciato da una
console. Eseguendo direttamente il comando
(ssh -X host.di.destinazione /usr/local/bin/xapp) dalla
pipe non esce .... un tubo (credo di capire che who non funga
in mancanza di un controlling terminal).
Continuero' a lavorare su questo spunto.
Grazie ancora
                       Antonio

 terminal).
infatti.  e' per questo che il tutto e' racchiuso in un test
if [ -t 0 ] ... fi ; in modo che entrando senza un controlling
terminal quella parte di .bash_profile non venga eseguita.  lo
script e' generale, mi e' seervito sotto linux/solaris/...; prova
a vedere se esiste qualche modo linux-specific di ottenere la
stessa informazione, ad esempio in uno dei files sotto
/proc/$PPID .



Li ho già frugati ben bene :-) cmq mi ci faccio un altro giro;
in caso di un altro nulla di fatto porto i criceti a prendere un po'
di sole e poi mi cerco una soluzione più arzigogolata ....
Ciao Maurizio e ancora grazie, alle prossime
                                               Antonio

Uff .... risolto. Variabile d'ambiente SSH_CLIENT. Tutto qua.
Ciao
                 Antonio