Modification des couleurs du terminal lors de la conversion vers une machine distante et inversement

8

Recherche d'un moyen de changer automatiquement les couleurs du terminal lors de la ssh-ing dans une machine distante et de revenir aux couleurs par défaut, lors de la sortie de la session ssh. Simplement, je veux avoir une autre couleur lorsque je travaille sur la machine distante.

Une idée?

ps: je ne veux pas utiliser iTerm2, mais Terminal.app standard

kobame
la source

Réponses:

9

J'utilise ce qui suit.

Avoir une commande shell, appelée myssh, avec du contenu:

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

et utilisez des alias bash pour la connexion, comme:

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

Lorsque je veux accéder au serveur Web, j'écris simplement sswebdans le terminal et j'ai obtenu le profil "Homebrew". A la fin de la session ssh, l'AppleScript revient au "Basic".

Les alias doivent aller dans votre $ HOME / .profile ou dans un fichier de démarrage bash similaire.

Les "Homebrew", "Ocean" etc. sont les profils de configuration des préférences de Terminal.app. Vous pouvez également configurer différentes polices, encodages, etc.

Bien sûr, vous pouvez l'utiliser directement (sans alias) comme:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
la source
comment feriez-vous cela pour iterm2? Merci!
Cosu
J'ai cessé d'utiliser iTerm lorsque dans "vim" après avoir sélectionné du texte, il est coupé la sélection au lieu de copier ..; (Donc, malheureusement, je n'ai aucune idée de la solution iTerm2.
jm666
Je vous remercie! Cela fait un moment que j'examine différentes façons de faire ça, mais votre méthode est simple et flexible. Des points bonus pour développer un cadre minuscule qui peut prendre des profils et des commandes de différents alias, plutôt que de se disperser autour d'un tas de scripts individuels avec des ensembles de préférences codés en dur.
octern
2

Je sais qu'il y a déjà quelques réponses, mais voici une alternative:

Il n'y a pas de moyen général de changer la couleur d'arrière-plan, mais nous pouvons utiliser un moyen standard pour changer le titre de la fenêtre. Si vous vous connectez à de nombreux périphériques non "serveur Unix" (tels que les périphériques réseau; routeurs, commutateurs, pare-feu, etc.), vous devez utiliser leurs shells et ne pouvez pas installer vos propres variables de shell. Alors, voici une autre façon:

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

Ajoutez ceci à votre .bashrc.

Fondamentalement, comme les fonctions et les alias sont préférés à la recherche dans le chemin, cela prend la commande ssh et utilise le texte avant et après le "@" pour définir les variables HOST et USER qu'il utilise ensuite pour faire écho à un code ASCII qui est reconnu par le terminal et utilisé pour définir le titre.

Vous devez utiliser "ssh [email protected]" pour cela et non "ssh -l user host.blah"

Si vous ne fournissez pas de nom d'utilisateur, il le définira comme votre nom d'utilisateur actuel (évidemment si vous utilisez un .ssh / config personnalisé (que j'utilise beaucoup), ce ne sera pas précis, mais je pense que c'est assez bon Être utile.

wawawawa
la source