Я часто входжу на різні сервери через вікно мого терміналу os x.
Я хотів би призначити кольорову схему для різних хостів, щоб мої вікна терміналів було легше розрізнити. Чи можна це зробити автоматично?
Я часто входжу на різні сервери через вікно мого терміналу os x.
Я хотів би призначити кольорову схему для різних хостів, щоб мої вікна терміналів було легше розрізнити. Чи можна це зробити автоматично?
Відповіді:
Ось повне рішення. Зберігайте список ip-адрес та / або доменів серверів та кольори, які ви хочете для них, зберігати в ~ / .server_colors:
192.168.122.102, Червоні піски 192.168.122.103, Океан www.foo.com, Трава foo.com, Трава
Потім додайте цей рядок до ~ / .profile, щоб викрасти команду ssh:
псевдонім ssh = "~ / bin / safe_ssh $ 1"
Потім порівняйте те, що відбувається після @ у вашій цілі ssh, зі своїм списком. Якщо є відповідність, запустіть AppleScript, щоб змінити екран на відповідний колір. Ось ~ / bin / safe_ssh:
#! / бін / баш ip = `відлуння $ 1 | вирізати -d "@" -f2` match = `cat ~ / .server_colors | grep $ ip | wc -l` якщо [$ match -gt 0] потім color = `cat ~ / .server_colors | grep $ ip | вирізати -f2 -d "," ` osascript ~ / bin / change_terminal_color.scpt "$ color" 2> / dev / null фі / usr / bin / ssh $ 1
І останнє, ось ~ / bin / change_terminal_color.scpt
на ходу аргв скажіть програмі "Термінал", щоб встановити поточні параметри вибраної вкладки вікна 1 до (перший набір установок, ім'я яких (пункт 1 аргументу)) кінцевий пробіг
Я взяв більшість цього коду з цієї публікації в блозі .
Так.
Ви використовуєте, наприклад, "екран" і налаштовуєте його: 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
з 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 речі в рубін :)
фк
Я використовую сценарій, який запускає SSH у xterm windows з різними кольорами 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 $@"