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

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

Danke an .ssh/config, alias und setterm.

Author: gaRex, 2013-06-05

4 answers

.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: If -clear rest gibt Ihnen ein Fehler setterm: argument error: 'rest' - try -clear reset statt.


Alternative zu setterm

Wenn Sie gnome-terminal oder ein anderes xterm verwenden und frustriert über die begrenzten Farboptionen von setterm sind und/oder Ihre setterm - Änderungen durch Farbcodes in Ihrer Eingabeaufforderung ($PS1) überschrieben werden, möchten Sie möglicherweise xtermcontrol anstelle von setterm oben, wie in diese Antwort gezeigt.

Zum Beispiel macht xtermcontrol --bg '#600' den Terminalhintergrund dunkelrot. Möglicherweise müssen Sie xtermcontrol installieren, bevor Sie es verwenden, z. B. sudo apt install xtermcontrol auf Debian-basierten Systemen.

 22
Author: gaRex,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-23 20:48:49

(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 immer noch verwenden:

--clear rest

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

exec bash

Mehr Infos:

man setterm
 4
Author: JoniJnm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-26 22:01:45

Auf Apple Mac / OSX ist setterm nicht verfügbar, aber Sie können osascript verwenden.

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 über "kennt" (z. B. Ocean); und kann anstelle von setterm in den obigen Antworten aufgerufen werden. Denken Sie daran, es auch zum ~/.bash_aliases hinzuzufügen, damit das Terminal beim Beenden des ssh session.

Beachten Sie, dass das Standardprofil bash unter OSX nicht .bash_aliases, sodass Sie Ihrem ~/.bash_profile möglicherweise Folgendes hinzufügen müssen:

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

Weitere Informationen zum Ändern der Terminalfarben in OSX finden Sie unter this SO answer.

 0
Author: Martin CR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-05-04 13:36:43

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

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

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

 0
Author: Enrico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-08-12 01:21:20