So ändern Sie die Terminalfarben beim Herstellen einer Verbindung zu SSH-Hosts

17

Sie möchten also die Terminalfarben ändern und sie beim Beenden zurücksetzen? Es ist möglich!

Dank .ssh / config, Alias ​​und Setterm.

gaRex
quelle
Ich weiß, wir haben Unmengen solcher Fragen, aber ich fand es einfach nicht so einfach wie meine aktuelle Version. Auch für diejenigen, die meine Antwort mit Details erweitern können, bitte erweitern Sie es. Dann können wir es nach einer detaillierteren Version akzeptieren.
gaRex

Antworten:

20

.bash_aliases

function ssh_alias() {
    ssh $@;
    setterm -default -clear rest;
}

alias ssh=ssh_alias

/ etc / ssh / ssh_config

# Make sure you have this line there:
PermitLocalCommand yes

.ssh / config

Host your.production.host
  User root
  LocalCommand setterm -term linux -back red -fore white -clear rest

Jetzt können Sie in Bash:

some command
# all in default colors
ssh your.production.host
# colors changed
# ....
exit
# colors changed back! yeea!

HINWEIS Wenn -clear restSie einen Fehler erhalten, setterm: argument error: 'rest'versuchen Sie es -clear resetstattdessen.


Als Alternative setterm

Wenn Sie gnome-terminal oder ein anderes xterm verwenden und durch settermdie eingeschränkte Farbauswahl frustriert sind und / oder Ihre settermÄnderungen durch Farbcodes in Ihrer Eingabeaufforderung ( $PS1) überschrieben werden , möchten Sie möglicherweise xtermcontrolanstelle von settermoben verwenden, wie in gezeigt diese Antwort .

Beispielsweise xtermcontrol --bg '#600'wird der Terminalhintergrund dunkelrot. Möglicherweise müssen Sie xtermcontrolvor der Verwendung installieren , z. B. sudo apt install xtermcontrolauf Debian-basierten Systemen.

gaRex
quelle
2
Wenn ich mich anmelde, erhalte ich die folgende Fehlermeldung: setterm: argument error: 'rest'Irgendeine Idee warum?
Linello
man setterm, dort suchen --clear. In meiner Version existiert es.
gaRex
Kann jemand eine Beschreibung der vorgenommenen Änderungen hinzufügen
Nilesh
4

(Lesen Sie zuerst die Antwort von gaRex.)

setterm hat die Argumente in den letzten Versionen geändert:

.bash_aliases

function ssh_alias() {
    ssh $@;
    setterm --default --clear all;
}

alias ssh=ssh_alias

.ssh / config

Host myproject.pro
    HostName myproject.com
    User root
    IdentityFile ~/.ssh/myproject
    LocalCommand setterm --term linux --background white --foreground black --clear all

Sie können weiterhin verwenden:

--clear rest

Sie können die .bash_aliases-Datei neu laden mit:

exec bash

Mehr Info:

man setterm
JoniJnm
quelle
Dies ist eine 3 Jahre alte Frage und Ihre Antwort ist ähnlich der bereits beantworteten
SeanClt
3
yep ... Ich wollte nur mehr Infos hinzufügen. Könnte eine Antwort auf die Antwort von gaRex sein.
JoniJnm
Ja, ich bin bei und verstehe klar, dass Sie helfen wollen und wir wollen Leute wie Sie
SeanClt
3
Klicken Sie in meiner ersten Antwort auf "Diese Antwort verbessern".
gaRex
0

Unter Apple ist Mac / OSX settermnicht verfügbar, aber Sie können verwenden osascript.

Für die obige Anwendung ist es praktisch, dies mit einem kleinen Shell-Skript zu tun:

    #!/bin/sh

    DEFAULT_SCHEME=Basic
    SCHEME=${1:-$DEFAULT_SCHEME}
    SAFE_SCHEME=\"${SCHEME//\"/}\"  # sanitise user input

    /usr/bin/osascript <<EOF
    tell application "Terminal"
        set current settings of window 1 to settings set $SAFE_SCHEME
    end tell
    EOF

Dieses Skript verwendet ein einzelnes Argument, das einem der Farbschemata entspricht, die terminal"bekannt" sind (z. B. Ozean) . und kann anstelle der settermobigen Antworten aufgerufen werden . Denken Sie daran, es auch dem hinzuzufügen ~/.bash_aliases, damit das Terminal beim Beenden der sshSitzung zum ursprünglichen Farbschema zurückkehrt .

Beachten Sie, dass das Standardprofil bashunter OSX keine Quelle ist, .bash_aliasessodass Sie möglicherweise Folgendes hinzufügen müssen ~/.bash_profile:

    if [ -f ~/.bash_aliases ]; then
        source ~/.bash_aliases
    fi

Weitere Informationen zum Ändern der Terminalfarben in OSX finden Sie in dieser SO-Antwort .

Martin CR
quelle
0

Ich brauchte dies, wenn ich mich mit meinen eigenen Computern verband. Was ich getan habe, war so einfach wie das Hinzufügen dieses Snippets zu meinem .bash_profile(das sich in meinen Punktedateien befindet, sodass es sowieso auf den meisten meiner Computer landet):

[ -n "$SSH_CONNECTION" ] && echo -e "\033]11;#336699\a"

Sie können die 336699für jede gewünschte Hex-Farbe ändern .

Enrico
quelle