Modifica dei colori dei terminali quando si passa alla macchina remota e viceversa


8

Alla ricerca di un modo per cambiare automaticamente i colori dei terminali quando si passa a una macchina remota e tornare ai colori predefiniti, quando si esce dalla sessione ssh. Semplicemente, voglio avere altri colori quando sto lavorando sulla macchina remota.

Qualche idea?

ps: non voglio usare iTerm2, ma Terminal.app standard

Risposte:


9

Sto usando il seguente.

Avere un comando shell, chiamato myssh, con contenuto:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

e usa gli alias bash per la connessione, come:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

Quando voglio accedere al server web, scrivo semplicemente sswebnel Terminale e ho il profilo "Homebrew". Al termine della sessione ssh, AppleScript torna su "Base".

Gli alias dovrebbero andare nel tuo $ HOME / .profile o in un simile file bash-startup.

"Homebrew", "Ocean" ecc. Sono i profili di impostazione dalle preferenze Terminal.app. Puoi anche impostare diversi tipi di carattere, codifiche, ecc.

Certo, puoi usarlo direttamente (senza alias) come:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

come lo faresti per iterm2? Grazie!
Cosu,

Ho smesso di usare iTerm quando in "vim" dopo aver selezionato del testo viene tagliata la selezione anziché la copia ..; (Quindi, sfortunatamente, non ho idea della soluzione iTerm2.
jm666,

Grazie! Ho cercato diversi modi per farlo per un po ', ma il tuo metodo è semplice e flessibile. Punti bonus per lo sviluppo di un piccolo framework in grado di acquisire profili e comandi da diversi alias, invece di racchiudersi in un gruppo di singoli script con set di preferenze codificate.
ottobre

2

So che ci sono già un paio di risposte, ma ecco un'alternativa:

Non esiste un modo generale per cambiare il colore di sfondo, ma possiamo usare un modo standard per cambiare il titolo della finestra. Se si accede a molti dispositivi non "Unix server" (come dispositivi di rete; router, switch, firewall ecc.), È necessario utilizzare le loro shell e non è possibile installare le proprie variabili shell. Quindi, ecco un altro modo:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

Aggiungi questo al tuo .bashrc.

Fondamentalmente, poiché le funzioni e gli alias sono preferiti alla ricerca nel percorso, questo prende il comando ssh e usa il testo prima e dopo "@" per impostare le variabili HOST e USER che poi usa per fare eco a un codice ASCII che è riconosciuto dal terminale e usato per impostare il titolo.

È necessario utilizzare "ssh user@host.blah" per questo e non "ssh -l user host.blah"

Se non si fornisce un nome utente, verrà impostato come nome utente corrente (ovviamente se si utilizza un .ssh / config personalizzato (che utilizzo molto), questo non sarà accurato, ma penso che sia abbastanza buono per essere utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.