Come posso cambiare automaticamente i colori dei terminali quando utilizzo un server?


14

Spesso accedo a server diversi dalla finestra del mio terminale os x.

Vorrei assegnare una combinazione di colori per host diversi in modo che le finestre dei miei terminali siano più facili da distinguere. Questo può essere fatto automaticamente?

Risposte:


11

Ecco una soluzione completa. Tieni un elenco degli indirizzi IP e / o domini dei tuoi server e dei colori che desideri per loro in ~ / .server_colors:

192.168.122.102, sabbie rosse
192.168.122.103, Ocean
www.foo.com, Erba
foo.com, Erba

Quindi aggiungi questa riga a ~ / .profile per dirottare il comando ssh:

alias ssh = "~ / bin / safe_ssh $ 1"

Quindi confronta qualsiasi cosa dopo la @ nel tuo obiettivo ssh con il tuo elenco. Se c'è una corrispondenza, esegui un AppleScript per cambiare lo schermo con il colore corrispondente. Ecco ~ / bin / safe_ssh:

#! / Bin / bash
ip = `echo $ 1 | taglia -d "@" -f2`
match = `cat ~ / .server_colors | grep $ ip | wc -l`
if [$ match -gt 0]
poi
    color = `cat ~ / .server_colors | grep $ ip | cut -f2 -d "," `
    osascript ~ / bin / change_terminal_color.scpt "$ color" 2> / dev / null
fi
/ usr / bin / ssh $ 1

E infine, ecco ~ / bin / change_terminal_color.scpt

in fuga argv
    dire all'applicazione "Terminale" di impostare le impostazioni correnti della scheda selezionata della finestra 1 su (prima impostazione impostata il cui nome è (elemento 1 di argv))
fine corsa

Ho preso la maggior parte di questo codice da questo post sul blog .


1
Molto bella. Nello script safe_ssh, $ 1 dovrebbe essere $ @ per consentire il passaggio di parametri extra a SSH. Forse anche una chiamata dopo ssh per riportare il terminale al valore predefinito. Un'ultima modifica lo renderebbe praticamente perfetto: supporto per comandi SSH che non contengono '@'.
nOw2


2

La soluzione di @muirbot funziona davvero bene per me. Ho apportato alcuni piccoli miglioramenti a questo. Lo aggiungerò sotto il suo post una volta che avrò abbastanza reputazione.

Sostituisci la linea

ip =echo $1 | cut -d"@" -f2
con
ip =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

Questa modifica consente di fornire argomenti aggiuntivi al comando ssh come "ssh -p 1111 userName @ host"

L'espressione regolare consente semplici indirizzi ipv4 e nomi di dominio.

Per supportare ulteriormente più argomenti, modificare l'ultima riga in

/ usr / bin / ssh $ @


0

Stavo solo cercando la stessa cosa e ho trovato questo articolo:

http://akrabat.com/php/osx-terminal-colours/

Usa uno script php per cambiare i colori del terminale con applecript. È possibile impostare mappature di colori diversi per ciascun server. Funziona benissimo per me, anche se senti il ​​bisogno di riscrivere il materiale php in rubino :)

fk


0

Uso uno script che avvia SSH in xterm windows con diversi colori bg / fg. Seleziona i colori in base all'hash del nome host da un intervallo di colori in modo che non sia necessaria alcuna configurazione.

Lo script è scritto in Ruby: https://github.com/mickeyil/ssx


0

Se stai usando iTerm2, crea un file chiamato ~/bin/ssh-host-color.shcon i contenuti da https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57 :

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

E aggiungi la seguente riga al tuo ~/.aliases.shfile:

alias ssh="~/bin/ssh-host-color.sh $@"
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.