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.