Zmiana kolorów terminala podczas wysyłania ssh do zdalnego komputera iz powrotem

8

Poszukiwanie sposobu automatycznej zmiany kolorów terminali podczas ssh-shingu na zdalnej maszynie i powrotu do domyślnych kolorów po wyjściu z sesji ssh. Po prostu chcę mieć inne kolory, gdy pracuję na zdalnym komputerze.

Dowolny pomysł?

ps: nie chcę używać iTerm2, ale standardowy Terminal.app

kobame
źródło

Odpowiedzi:

9

Używam następujących.

Wywołaj polecenie powłoki mysshz zawartością:

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

i użyj aliasów bash do połączenia, takich jak:

alias ssweb='myssh Homebrew [email protected]'
alias ssmail='myssh Ocean [email protected]'

Kiedy chcę ssh na serwerze WWW, po prostu piszę sswebw terminalu i mam profil „Homebrew”. Po zakończeniu sesji ssh AppleScript powraca do „Basic”.

Aliasy powinny znaleźć się w twoim $ HOME / .profile lub podobnym pliku bash-startup.

„Homebrew”, „Ocean” itp. To profile ustawień z preferencji Terminal.app. Możesz także ustawić różne czcionki, kodowania itp.

Oczywiście możesz go używać bezpośrednio (bez aliasów), np .:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
źródło
jak byś to zrobił dla iterm2? dzięki!
Cosu,
Ja przestałem używać iTerm kiedy w „vim” po wybraniu jakiś tekst to jest wycięty wyboru zamiast kopii ..; (Tak więc, niestety, nie mam pojęcia o rozwiązanie iTerm2.
jm666
Dziękuję Ci! Od jakiegoś czasu przyglądam się różnym, niewygodnym sposobom, ale twoja metoda jest prosta i elastyczna. Punkty bonusowe za opracowanie małego frameworka, który może pobierać profile i polecenia z różnych aliasów, zamiast rozrzucać wiele pojedynczych skryptów z zakodowanymi zestawami preferencji.
octern
2

Wiem, że jest już kilka odpowiedzi, ale oto alternatywa:

Nie ma ogólnego sposobu zmiany koloru tła, ale możemy użyć standardowego sposobu zmiany tytułu okna. Jeśli logujesz się na wielu urządzeniach innych niż „serwer Unix” (takich jak urządzenia sieciowe; routery, przełączniki, zapory ogniowe itp.), Musisz użyć ich powłok i nie możesz zainstalować własnych zmiennych powłoki. Oto inny sposób:

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 $@
}

Dodaj to do swojego .bashrc.

Zasadniczo, ponieważ funkcje i aliasy są preferowane zamiast patrzeć w ścieżkę, pobiera polecenie ssh i używa tekstu przed i po „@”, aby ustawić zmienne HOST i USER, które następnie wykorzystuje do echa kodu ASCII rozpoznawanego przez terminal i służy do ustawiania tytułu.

Musisz użyć do tego „ssh [email protected]”, a nie „ssh -l user host.blah”

Jeśli nie podasz nazwy użytkownika, ustawisz ją jako bieżącą nazwę użytkownika (oczywiście jeśli używasz niestandardowego pliku .ssh / config (którego często używam), to nie będzie to dokładne, ale myślę, że jest wystarczająco dobry być użytecznym.

wawawawa
źródło