Я часто захожу на разные серверы из окна моего терминала OS X.
Я хотел бы назначить цветовую схему для разных хостов, чтобы мои окна терминала были проще различать. Можно ли это сделать автоматически?
Я часто захожу на разные серверы из окна моего терминала OS X.
Я хотел бы назначить цветовую схему для разных хостов, чтобы мои окна терминала были проще различать. Можно ли это сделать автоматически?
Ответы:
Вот полное решение. В ~ / .server_colors храните список IP-адресов и / или доменов ваших серверов и цветов, которые вы хотите для них:
192.168.122.102, Красные Пески 192.168.122.103, океан www.foo.com, Grass foo.com, Grass
Затем добавьте эту строку в ~ / .profile, чтобы перехватить команду ssh:
псевдоним 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
на бегу argv указать приложению «Терминал» установить текущие настройки выбранной вкладки окна 1 (первые настройки, имя которых (пункт 1 из argv)) конец бега
Я взял большую часть этого кода из этого поста в блоге .
Да.
Либо вы используете, например, «экран» и настроить его: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html
Или вам удастся сделать это на вашем SSH Client, если это возможно.
Вы также можете попробовать это: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
Решение @muirbot работает очень хорошо для меня. Я сделал несколько небольших улучшений в этом. Я добавлю его ниже своего поста, как только у меня будет достаточно репутации.
Заменить линию
ф =echo $1 | cut -d"@" -f2
с ф =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-скрипт для изменения цвета терминала на applecript. Вы можете настроить сопоставления разных цветов для каждого сервера. Прекрасно работает для меня, хотя чувствую желание переписать php-материал в ruby :)
Ф.К.
Я использую скрипт, который запускает 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 $@"