Ändern der Terminalfarben beim Umschalten auf Remote-Computer und zurück

8

Suchen Sie nach einer Möglichkeit, die Terminalfarben automatisch zu ändern, wenn Sie die Remote-Maschine verwenden, und beim Beenden der SSH-Sitzung wieder auf die Standardfarben zurückgreifen. Ich möchte einfach eine andere Farbe, wenn ich an der Remote-Maschine arbeite.

Irgendeine Idee?

ps: Ich möchte nicht iTerm2 verwenden, sondern das standardmäßige Terminal.app

kobame
quelle

Antworten:

9

Ich verwende folgendes.

Habe einen Shell-Befehl, der aufgerufen wird mysshmit Inhalt:

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

und benutze bash-Aliase für die Verbindung, wie:

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

Wenn ich ssh in den Webserver schreiben möchte, schreibe ich einfach ssweb im Terminal und ich bekam das "Homebrew" -Profil. Wenn die SSH-Sitzung endet, wird das AppleScript auf "Basic" zurückgesetzt.

Die Aliase sollten in Ihre $ HOME / .profile oder eine ähnliche bash-Startup-Datei geschrieben werden.

"Homebrew", "Ocean" usw. sind die Einstellungsprofile der Terminal.app-Voreinstellungen. Sie können auch verschiedene Schriftarten, Kodierungen usw. einrichten.

Natürlich können Sie es direkt (ohne Aliase) wie folgt verwenden:

myssh Pro [email protected]
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
quelle
Wie würdest du das für iterm2 machen? Vielen Dank!
Cosu
Ich habe in "vim" aufgehört, iTerm zu verwenden, nachdem ich einen Text ausgewählt habe ausgeschnitten die Auswahl statt kopieren ..; (Also leider habe ich keine Ahnung von iTerm2-Lösung.
jm666
Vielen Dank! Ich habe mir verschiedene kludgische Wege angesehen, um dies zu tun, aber Ihre Methode ist einfach und flexibel. Bonuspunkte für die Entwicklung eines winzigen Frameworks, das Profile und Befehle aus verschiedenen Aliasnamen verwenden kann, anstatt mehrere einzelne Skripts mit fest codierten Voreinstellungen zu verteilen.
octern
2

Ich weiß, dass es bereits ein paar Antworten gibt, aber hier ist eine Alternative:

Es gibt keine generelle Möglichkeit, die Hintergrundfarbe zu ändern, aber wir können eine Standardmethode verwenden, um den Fenstertitel zu ändern. Wenn Sie sich bei vielen Nicht-Unix-Server-Geräten anmelden (z. B. Netzwerkgeräte, Router, Switches, Firewalls usw.), müssen Sie deren Shells verwenden und können keine eigenen Shell-Variablen installieren. Also hier ist ein anderer Weg:

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

Fügen Sie dies Ihrem hinzu .bashrc.

Da Funktionen und Aliase gegenüber dem Pfad bevorzugt werden, verwendet dieser Befehl den Befehl ssh und verwendet den Text vor und nach dem "@", um HOST- und USER-Variablen festzulegen, anhand derer ein ASCII-Code ausgegeben wird, der vom erkannt wird Terminal und verwendet, um den Titel festzulegen.

Sie müssen dafür "ssh [email protected]" und nicht "ssh -l user host.blah" verwenden.

Wenn Sie keinen Benutzernamen angeben, wird dieser als Ihr aktueller Benutzername festgelegt (natürlich, wenn Sie eine benutzerdefinierte .ssh / config verwenden (die ich häufig verwende), dann ist dies nicht genau, aber ich denke, es ist gut genug um nützlich zu sein.

wawawawa
quelle