Назад | Перейти на главную страницу

Как я могу автоматически менять цвета терминала при ssh-сервере?

Я часто захожу на разные серверы из окна терминала OS X.

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

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

192.168.122.102,Red Sands
192.168.122.103,Ocean
www.foo.com,Grass
foo.com,Grass

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

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

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

#!/bin/bash
ip=`echo $1 | cut -d"@" -f2`
match=`cat ~/.server_colors | grep $ip | wc -l`
if [ $match -gt 0 ]
then
    color=`cat ~/.server_colors | grep $ip | cut -f2 -d","`
    osascript ~/bin/change_terminal_color.scpt "$color" 2>/dev/null
fi
/usr/bin/ssh $1

И наконец, вот ~ / bin / change_terminal_color.scpt

on run argv
    tell application "Terminal" to set current settings of selected tab of window 1 to (first settings set whose name is (item 1 of argv))
end run

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

Да.

Либо вы используете, например, "экран" и настройте его: 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/

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

Заменить строку

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

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

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

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

/usr/bin/ssh $@

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

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

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

fk

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

Скрипт написан на Ruby: https://github.com/mickeyil/ssx

Если вы используете 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 $@"