# ssh, distinzione sessioni varie!

## lucapost

Mi capita spesso di lanciare da xterm connessioni ssh a server remoti e allo stesso tempo avere aperto un terminale su localhost.

Non vi capita mai di digitare un comando che volete eseguire in remoto, o vicevarsa, sul terminale sbagliato? A me spessissimo!

Quindi ho pensato, per la connessione ssh cambio colore di background rispetto al nero di default!   :Laughing:  che lampi di genio mi prendono ogni tanto!!!   :Laughing: 

Il modo più semplice che ho trovato, per ora, è crearmi una nuova icona che mi esegua qualcosa del tipo xterm -fg black -bg red, e da qui lanciare ssh,ma non è l'estrema comodità!

Quello che voglio ottenere è lanciare ssh, e quindi xterm cambia i suoi colori, chiudere la connessione ssh e ripristinare quelli di default!

E' possibile fare questo tutto nello stesso terminale (potrei anche passare a eterm/aterm se c'è ne fosse il bisogno  :Crying or Very sad: )?

Qualche suggerimento?

----------

## federico

Io ho personalizzato il $PS1 delle varie macchine alle quali mi connetto in modo da avere una visione di colori differente e notare subito su che macchina sto lavorando, indipendentemente dal programma che sto utilizzando per connettermi tramite ssh ... !

Fede

----------

## lucapost

$PS1 è una variabile da mettere in .bashrc giusto?

Ti spiace indicarmi più precisamete come hai fatto, magari con qualche commento sulle opzioni che utilizzi?

----------

## gutter

Io uso questa:

```

################################

# Accept syntax:               #

# smartssh user@remote_host    #

################################

smartssh() {

    PARAMS="$*"

    echo -ne "\033]0;$PARAMS\007"

    ssh $PARAMS

}

```

----------

## Kernel78

Io rinomino le sessioni di konsole ... visto che mi collego a diverse macchine remote contemporaneamente dovrei avere diverse combinazioni cromatiche e ricordarmi quali colori corrispondono a quale macchina mentre se me lo scrivo sotto mi viene più immediato  :Wink: 

/EDIT: ho pensato di condividere con la comunità lo scriptino che utilizzo io (anche se non colora la sessione e quindi lievemente OT)

```
#!/bin/bash

dcop $KONSOLE_DCOP_SESSION renameSession "$(echo $1 |cut -f 2 -d "@")"

ssh $1

dcop $KONSOLE_DCOP_SESSION renameSession "Locale"

```

L'ho chiamato ssh.sh e ho impostato un alias ssh che lo richiami.

In questo modo rinomino la sessione con l'hostname (o l'ip) della macchina a cui mi collego e quando ssh termina imposta il nome a Locale.

Io lo trovo utile e simpatico ...

----------

## lucapost

 *gutter wrote:*   

> Io uso questa:
> 
> ```
> 
> ################################
> ...

 

ok, questo in .bashrc in locale rinomina la finestra di xterm, o quel che sia.

Ma quando chiudo la sessione ssh rimane tutto com'e'!

@federico

puoi spiegarmi meglio la tua soluzione, e quindi cosa modificare su ciasun server?

ps: ho modificato il titolo in modo da accontentere anche Kernel78

----------

## Sasdo

 *federico wrote:*   

> Io ho personalizzato il $PS1 delle varie macchine alle quali mi connetto in modo da avere una visione di colori differente e notare subito su che macchina sto lavorando, indipendentemente dal programma che sto utilizzando per connettermi tramite ssh ... !
> 
> Fede

 

Anche io ho fatto così.

Per la modifica delle variabili PS1 ti rimando a questo topic dove se ne parla ampiamente:

https://forums.gentoo.org/viewtopic-t-195046-highlight-prompt+bash.html

devi modificare i .bashrc con le opzioni che vuoi.

Ciaos!

----------

## lucapost

ok, ho capito come vedere data, ora, ecc

Ma per cambiare colore di backgroud?

----------

## federico

 *Sasdo wrote:*   

> https://forums.gentoo.org/viewtopic-t-195046-highlight-prompt+bash.html

 

In aggiunta mio fratello ha scritto un programma che semplifica la scrittura di un PS, lo puoi trovare qui:

http://www.sideralis.org/p.php?action=4&pjid=18

Non penso sia possibile tramite questo sistema variare il colore di sfondo ma solo tutte le impostazioni del prompt della shell, sia come colori sia come contenuti (e quindi e' possibile ottenere MOLTE varieta'). Personalmente trovo che cambiare il colore di backgroud ucciderebbe la mia vista...

Fede

----------

## gutter

 *lucapost wrote:*   

> 
> 
> Ma quando chiudo la sessione ssh rimane tutto com'e'!
> 
> 

 

Cioè?

----------

## Luca89

Io solitamente cambio qualche colore nel prompt di root, per esempio il nome dell'host oppure il colore del carattere "#".

----------

## Sasdo

 *lucapost wrote:*   

> ok, ho capito come vedere data, ora, ecc
> 
> Ma per cambiare colore di backgroud?

 

mmm non credo sia possibile via solo bashrc... non credo ci sia il modo di cambiare a runtime il colore di sfondo di xterm...

tramite il PS1 puoi cambiare il colore delle scritte... forse non è immediato come lo sfondo però aiuta  :Wink: 

----------

## Kernel78

 *Sasdo wrote:*   

>  *lucapost wrote:*   ok, ho capito come vedere data, ora, ecc
> 
> Ma per cambiare colore di backgroud? 
> 
> mmm non credo sia possibile via solo bashrc... non credo ci sia il modo di cambiare a runtime il colore di sfondo di xterm...
> ...

 

Penso che usando konsole e dcop si possa modificare il colore di sfondo anche se non ho mai provato a farlo ...

----------

## devilheart

ma non ti basta la scritta '@nomehost' presente nel prompt?

----------

## lucapost

 *gutter wrote:*   

>  *lucapost wrote:*   
> 
> Ma quando chiudo la sessione ssh rimane tutto com'e'!
> 
>  
> ...

 

Mi riferivo al metodo di cambiare il titolo della finestra di xterm, in particolare al fatto che quando chiudi la connessione la finestra non torna al nome originale.

Comunque, se qualcuno sa indicarmi anche come tornare indietro con il nome della finestra, potrei accontentarmi.

 *devilheart wrote:*   

> ma non ti basta la scritta '@nomehost' presente nel prompt?

 

Se ho aperto il thread, si vede di no!

----------

## Kernel78

 *devilheart wrote:*   

> ma non ti basta la scritta '@nomehost' presente nel prompt?

 

A me basta il nome dell'host (o l'ip) nella linguetta di konsole (anche perchè se dovessi usare un colore diverso per ogni macchina a cui mi devo collegare sarebbe un macello).

----------

## Kernel78

 *lucapost wrote:*   

> Mi riferivo al metodo di cambiare il titolo della finestra di xterm, in particolare al fatto che quando chiudi la connessione la finestra non torna al nome originale.

 

Io con konsole resetto il nome della sessione quando termina ssh (ma forse inizio a diventare noioso con konsole di qua e konsole di la, visto che a nessuno sembra interessare).

----------

## makoomba

 *Kernel78 wrote:*   

> Io con konsole resetto il nome della sessione quando termina ssh (ma forse inizio a diventare noioso con konsole di qua e konsole di la, visto che a nessuno sembra interessare).

 

pssss....

le linguette ci sono anche in multi-gnome-terminal, prova con quello, magari ti ascoltano...

cmq, come ho già detto in altro topic analolologo: se deve succedere, succede.

----------

## Kernel78

 *makoomba wrote:*   

>  *Kernel78 wrote:*   Io con konsole resetto il nome della sessione quando termina ssh (ma forse inizio a diventare noioso con konsole di qua e konsole di la, visto che a nessuno sembra interessare). 
> 
> pssss....
> 
> le linguette ci sono anche in multi-gnome-terminal, prova con quello, magari ti ascoltano...

 

Il fatto è che dubito che gnome supporti dcop, anzi a quanto ne sapevo io non aveva nulla di simile (ma sono informazioni vecchie, magari nel frattempo si è messo al passo)

----------

## lucapost

Forse ho trovato il succo del problema.

Per rinominare la finestra penso di utilizzare la variabile d'ambiente locale 

```
PROMPT_COMMAN=(...HOSTNAME_TMP...) #cioè PROMPT_COMMAND è funzione di ...HOSTNAME_TMP...
```

Il problema che si pone è, quando lancio ssh, come rinominare ad esempio HOSTNAME_TMP in modo che utilizzi lo HOSTNAME remoto.

Quando chiudo la connessione ssh, voglio che ritornino impostate le variabili in locale e quindi HOSTNAME_TMP riutilizzi lo HOSTNAME locale.

E via via così per tutte le variabili che voglio importare da remoto.

L'idea mi sembra abbastanza 'pulita', ma avrei un pò di difficoltà a realizzarla:

Facciamo finta di gestire il tutto con uno script. Con scp importo le variabili che mi interessano da remoto a locale....ecc

EDIT: magari utilizzando scp senza l'inserimento della password che è più semplice. C'è un thread che può aiutarmi se non sbaglio...

Ci penserò....

Cosa ne pensate? Qualche aiutino?

----------

## Sasdo

 *lucapost wrote:*   

> Forse ho trovato il succo del problema.
> 
> Per rinominare la finestra penso di utilizzare la variabile d'ambiente locale 
> 
> ```
> ...

 

la via più immediata che mi viene in mente è quella di fare una cosa tipo:

file .bashrc

```
alias ssh="ssh $PARAM && $(ripristina)"
```

dove $PARAM sono i parametri che passi a ssh da linea di comando, se non ricordo male ci dovrebbe essere un modo per utilizzarli negli alias ma non ricordo qual è.

E $(ripristina) è la chiamata ad una funzione (anch'essa scritta nel .bashrc) che ripristina tutti i valori a quelli di default prima della connessione ssh.

l'unica controindicazione è che se ssh termina con un errore, la funzione "ripristina" non viene invocata.

ciaos

----------

## Kernel78

 *Sasdo wrote:*   

> 
> 
> ```
> alias ssh="ssh $PARAM && $(ripristina)"
> ```
> ...

 

allora usa

```
alias ssh="ssh $PARAM ; $(ripristina)"
```

 così che ssh termini con errore o meno verrà sempre chiamata ripristina ...

----------

## lucapost

ok, forse siamo sulla strada giusta, però per fare le cose per benino...

${PWD/$HOME/~} se non sbaglio mi dice in che cartella mi trovo, come sincronizzo questa variabile da remoto in locale?

sarebbe carino farlo solamente quando ho una sessione ssh attiva, una soluzione "facile" sarebbe con un timeout, ma come esco dal loop?

La risposta a questa domanda faciliterebbe MOLTO la futura lettura delle variabili remote in locale.

EDIT:Il bello è che la cosa funziona già, ma non so come!

Infatti quando ho una connessione ssh attiva, la sua bash remota mi restituisce già USER, HOSTNAME, PWD remote, infatti si possono vedere nella shell che utilizzo

Ma dove le salva in locale?O meglio cosa vado a leggere in locale? Ora vado a dare un'occhiata al log di ssh...

ps: mi sa che la storia si stà complicando un pò troppo...

----------

## Sasdo

 *lucapost wrote:*   

> EDIT:Il bello è che la cosa funziona già, ma non so come!
> 
> Infatti quando ho una connessione ssh attiva, la sua bash remota mi restituisce già USER, HOSTNAME, PWD remote, infatti si possono vedere nella shell che utilizzo
> 
> Ma dove le salva in locale?O meglio cosa vado a leggere in locale? Ora vado a dare un'occhiata al log di ssh...
> ...

 

frena frena frena!

Mi sembra che ci sia un po' di confusione...

..quando parti con ssh, è ovvio che ti faccia vedere USER HOSTNAME e PWD remote perchè sei loggato in remoto! Praticamente ssh non è altro che una shell in remoto, è come se tu lanciassi bash (o simile) su un pc e comandassi tale bash da remoto!

Perforza che le sue variabili sono già aggiornate!

A questo punto però non mi è più chiaro quello che vuoi fare... ;_;

----------

## lucapost

 *Sasdo wrote:*   

> 
> 
> A questo punto però non mi è più chiaro quello che vuoi fare... ;_;

 

Nella finestra di xterm in locale voglio sostituire il titolo xterm con USER@HOSTNAME PWD dove le variabili USER, HOSTNAME, PWD sono quelle del pc remoto.

Il mio problema è quindi leggere le variabili d'ambiente remote e quindi definire delle nuove variabili locali, sincronizzando gli eventuali cambiamenti.

----------

## Kernel78

O stai facendo confusione tu o non ho capito un cavolo io ...

La finestra che apri è locale ma l'ambiente su cui la apri è remoto ...

Una volta che sei collegato ad una macchina remota hai già a disposizione tutto l'ambiente remoto quindi hai anche accesso alle variabili remote.

----------

## gutter

 *lucapost wrote:*   

> 
> 
> Mi riferivo al metodo di cambiare il titolo della finestra di xterm, in particolare al fatto che quando chiudi la connessione la finestra non torna al nome originale.
> 
> 

 

Da me sia con xterm che con aterm torna al "titolo" originale   :Confused: 

----------

