Я часто захожу на разные серверы из окна терминала 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 $@"