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

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

Sie möchten also die Terminalfarben ändern und beim Beenden zurücksetzen?

Dies ist möglich dank .ssh/config, alias, undsetterm

Antwort1

  • .bash_aliases:
    function ssh_alias() {
      ssh "$@";
      setterm -default -clear rest;
      # If `-clear rest` gives error `setterm: argument error: 'rest'`, try `-clear reset` instead 
    }
    
    alias ssh=ssh_alias
    
  • /etc/ssh/ssh_config:
    # Ensure this line exists:
      PermitLocalCommand yes
    
  • .ssh/config:
    Host your.production.host
      User root
      LocalCommand setterm -term linux -back red -fore white -clear rest
    

In Bash können Sie jetzt:

some command

# all in default colors:
  ssh your.production.host

# colors changed:
# ....

exit
# colors changed back! yeea!


Als Alternative setterm:

gnome-terminalWenn Sie oder ein anderes verwenden xtermund über die eingeschränkte Farbauswahl von frustriert sind settermund/oder Ihre settermÄnderungen durch Farbcodes in Ihrer Eingabeaufforderung [ $PS1] überschrieben werden, können Sie anstelle von settermverwenden xtermcontrol, wie in gezeigt.diese Antwort.

  • Beispielsweise xtermcontrol --bg '#600'wird der Terminalhintergrund dunkelrot, obwohl Sie ihn möglicherweise installieren müssen, xtermcontrolbevor Sie ihn verwenden können(zB sudo apt install xtermcontrolauf Debian-basierten Systemen)

Antwort2

(Lesen Sie gaRex'sAntwortErste)

settermhat die Argumente in den letzten Versionen geändert:(Mehr Info: man setterm)

  • .bash_aliases:
    function ssh_alias() {
      ssh $@;
      setterm --default --clear all;
    }
    
    alias ssh=ssh_alias
    
    Sie können weiterhin nutzen --clear restund aufladen .bash_aliasesüberexec bash

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

Antwort3

Ich brauchte dies, wenn ich eine Verbindung zu meinen eigenen Computern herstellte. Ich habe einfach diesen Code-Schnipsel zu meinem hinzugefügt .bash_profile(der sich in meinen Dotfiles befindet und daher sowieso auf den meisten meiner Computer landet):

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

336699Sie können es in jede gewünschte Hex-Farbe ändern .

Antwort4

Unter Apple Mac/OSX ist es nicht verfügbar, Sie können es aber mit einem kleinen Shell-Skript settermverwenden :osascript

#!/bin/sh

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

/usr/bin/osascript <<EOF
tell application "Terminal"
  set current settings of window 1 to settings set $SAFE_SCHEME
end tell
EOF
  • Dies nimmt ein einzelnes Argument entgegen, das einem der Farbschemata entspricht, terminaldie(zB Ozean)und kann anstelle von settermin den obigen Antworten aufgerufen werden. Denken Sie daran, es auch zu hinzuzufügen, ~/.bash_aliasesdamit das Terminal zum ursprünglichen Farbschema zurückkehrt, wenn Sie die sshSitzung beenden.

Das Standardprofil bashunter OSX unterstützt keine Quelle .bash_aliases, daher müssen Sie möglicherweise Folgendes hinzufügen ~/.bash_profile:

if [ -f ~/.bash_aliases ]; then
  source ~/.bash_aliases
fi
  • Weitere Informationen zum Ändern der Terminalfarben in OSX finden Sie unterdiese SO-Antwort.

verwandte Informationen