Изменение цвета терминала при подключении к удаленному компьютеру и обратно

8

Ищите способ автоматически изменять цвета терминала при подключении ssh-к удаленной машине и возвращаться к цветам по умолчанию при выходе из сеанса ssh. Просто хочу иметь другие цвета, когда я работаю на удаленной машине.

Есть идеи?

PS: не хочу использовать iTerm2, но стандартный Terminal.app

kobame
источник

Ответы:

9

Я использую следующее.

Создайте команду shell mysshс содержимым:

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

и используйте псевдонимы bash для соединения, например:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

Когда я хочу подключиться к серверу через ssh, я просто пишу sswebв Терминале и получаю профиль «Доморощенный». Когда сессия ssh заканчивается, AppleScript возвращается к «Основному».

Псевдонимы должны быть в вашем файле $ HOME / .profile или аналогичном файле запуска bash.

«Доморощенный», «Океан» и т. Д. - это профили настроек из настроек Terminal.app. Вы также можете настроить различные шрифты, кодировки и т. Д.

Конечно, вы можете использовать его напрямую (без псевдонимов), например:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name
jm666
источник
как бы вы сделали это для iterm2? Спасибо!
Cosu
Я прекратил использовать iTerm, когда в «vim» после выделения некоторого текста он вырезал выделение вместо копии…; (Так что, к сожалению, я не имею никакого представления о решении iTerm2.
jm666
Спасибо! Я долго искал разные хитрые способы сделать это, но ваш метод прост и гибок. Бонусы за разработку крошечной платформы, которая может принимать профили и команды из разных псевдонимов, а не разбрасывать кучу отдельных скриптов с жестко заданными наборами предпочтений.
октября
2

Я знаю, что уже есть пара ответов, но вот альтернатива:

Нет общего способа изменить цвет фона, но мы можем использовать стандартный способ изменить заголовок окна. Если вы входите на многие устройства, не относящиеся к Unix-серверу (такие как сетевые устройства; маршрутизаторы, коммутаторы, брандмауэры и т. Д.), Вам придется использовать их оболочки и не можете устанавливать собственные переменные оболочки. Итак, вот еще один способ:

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

Добавьте это к вашему .bashrc.

В основном, так как функции и псевдонимы предпочтительнее, чем поиск по пути, здесь используется команда ssh и используется текст перед и после «@» для установки переменных HOST и USER, которые затем используются для отображения кода ASCII, который распознается терминал и используется для установки названия.

Для этого вы должны использовать «ssh user@host.blah», а не «ssh -l user host.blah»

Если вы не предоставите имя пользователя, оно будет установлено как ваше текущее имя пользователя (очевидно, если вы используете пользовательский .ssh / config (который я часто использую), тогда это не будет точным, но я думаю, что это достаточно хорошо быть полезным.

wawawawa
источник