Вопрос: Как я могу автоматически изменять цвета терминала, когда я сервер ssh?


Я часто регистрируюсь на разных серверах из окна терминала os x.

Я хотел бы назначить цветовую схему для разных хостов, чтобы мои оконные окна легче разделить. Это можно сделать автоматически?


14
2018-04-08 07:00


Источник




Ответы:


Вот полное решение. Храните список IP-адресов и / или доменов ваших серверов и цвета, которые вы хотите для них, в ~ / .server_colors:

192.168.122.102, Красные Пески
192.168.122.103, океан
www.foo.com, Grass
foo.com, Grass

Затем добавьте эту строку в ~ / .profile, чтобы захватить команду ssh:

alias ssh = "~ / bin / safe_ssh $ 1"

Затем сравните все, что после @ в вашей цели ssh, в ваш список. Если есть совпадение, запустите AppleScript, чтобы изменить экран на соответствующий цвет. Вот ~ / bin / safe_ssh:

#! / Bin / Баш
ip = `echo $ 1 | cut -d "@" -f2`
match = `cat ~ / .server_colors | grep $ ip | wc -l`
если [$ match -gt 0]
тогда
    color = `cat ~ / .server_colors | grep $ ip | cut -f2 -d "," `
    osascript ~ / bin / change_terminal_color.scpt "$ color" 2> / dev / null
фи
/ usr / bin / ssh $ 1

И последнее, вот ~ / bin / change_terminal_color.scpt

на run argv
    сообщите приложению «Терминал», чтобы установить текущие настройки выбранной вкладки окна 1 (первый набор настроек, чье имя (элемент 1 из argv))
конечный запуск

Я взял большую часть этого кода из это сообщение в блоге,


11
2018-04-02 23:32



Очень хорошо. В сценарии safe_ssh значение $ 1 должно быть $ @, чтобы разрешить передачу дополнительных параметров SSH. Возможно, также вызов после ssh, чтобы вернуть терминал обратно по умолчанию. Последнее редактирование сделает это в значительной степени идеальным: поддержка команд SSH, не содержащих «@». - nOw2


Да.

Либо вы используете, например. «экран» и настройте его: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html

Или вам удастся сделать это на вашем SSH-клиенте, если это возможно.

Вы также можете попробовать следующее: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/


2
2018-04-08 07:21





Решение @muirbot отлично работает для меня. Я немного улучшил это. Я добавлю его ниже своего поста, как только у меня будет достаточно репутации.

Заменить линию

ф =echo $1 | cut -d"@" -f2
 с
ф =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

Это изменение позволяет предоставить дополнительные аргументы вашей команде ssh, например, «ssh -p 1111 userName @ host»

Регулярное выражение позволяет использовать простые ipv4-адреса и имена доменов.

Для дальнейшей поддержки нескольких аргументов измените последнюю строку на

/ usr / bin / ssh $ @


2
2017-08-31 12:40





Я просто искал то же самое и нашел эту статью:

http://akrabat.com/php/osx-terminal-colours/

Он использует скрипт php для изменения цветов терминала с помощью applescript. Вы можете настроить сопоставления разных цветов для каждого сервера. Работает отлично для меня, хотя чувствую желание переписать php-материал в ruby ​​:)

Ф.К.


0
2017-07-01 11:24





Я использую скрипт, который запускает SSH в xterm-окнах с разными цветами bg / fg. Он выбирает цвета на основе хеша имени хоста из цветового диапазона, поэтому настройка не требуется.

Сценарий написан на Ruby: https://github.com/mickeyil/ssx


0
2017-12-07 18:53





Если вы используете iTerm2, создайте файл с именем ~/bin/ssh-host-color.sh с содержанием из https://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57:

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

И добавьте следующую строку в свою ~/.aliases.sh файл:

alias ssh="~/bin/ssh-host-color.sh $@"

0
2018-02-07 11:23