Найти в Дзене
expert-x

Автоматическое изменение цветовой схемы gnome-terminal при подключении по ssh

Если вы работаете одновременно с несколькими средами (например TEST, CERT, PROD) велика вероятность, из-за человеческого фактора перепутав окна, выкатить не протестированные изменения в продакшн :)
Признаюсь, в моей практике такое было, слава Богу удалось быстро всё откатить. Но сейчас не об этом. Хочу предложить вам снизить вероятность подобных ситуаций используя цветовую дифференциацию окон gnome-terminal. Cоздадим скрипт, который будет анализировать IP-адрес и выбирать профиль. Мы будем использовать простые правила для определения среды, например: Вы можете изменить эти правила в зависимости от пула своих IP-адресов. подробная инструкция находится здесь: вынесу в статью только часть, касающуюся Ubuntu: sudo apt update && sudo apt upgrade -y
sudo apt install dconf-cli uuid-runtime curl -y
в качестве примера будем использовать профили:
для локальных окон Blue Dolphin
для тестовых сред Grass
для продакшн Cobalt 2
bash -c "$(wget -qO- https://git.io/vQgMr)" вписываем поочередно номер
Оглавление

Если вы работаете одновременно с несколькими средами (например TEST, CERT, PROD) велика вероятность, из-за человеческого фактора перепутав окна, выкатить не протестированные изменения в продакшн :)
Признаюсь, в моей практике такое было, слава Богу удалось быстро всё откатить. Но сейчас не об этом. Хочу предложить вам снизить вероятность подобных ситуаций используя цветовую дифференциацию окон gnome-terminal.

Решение

Cоздадим скрипт, который будет анализировать IP-адрес и выбирать профиль. Мы будем использовать простые правила для определения среды, например:

  • Тестовая среда: IP-адреса начинаются с 192.168. (локальная сеть, часто используется для тестов).
  • Продакшн-среда: IP-адреса начинаются с 10. (пример для продакшена, можно перенастроить под ваши нужды).

Вы можете изменить эти правила в зависимости от пула своих IP-адресов.

Gogh

для начала установим цветовые профили в gnome-terminal

подробная инструкция находится здесь:

GitHub - Gogh-Co/Gogh: Gogh is a collection of color schemes for various terminal emulators, including Gnome Terminal, Pantheon Terminal, Tilix, and XFCE4 Terminal also compatible with iTerm on macOS.

вынесу в статью только часть, касающуюся Ubuntu:


Ставим необходимые компоненты

sudo apt update && sudo apt upgrade -y
sudo apt install dconf-cli uuid-runtime curl -y

Устанавливаем интерактивно цветовые профили


в качестве примера будем использовать профили:
для локальных окон Blue Dolphin
для тестовых сред Grass
для продакшн Cobalt 2

выполняем в терминале


bash -c "$(wget -qO-
https://git.io/vQgMr)"
-2

вписываем поочередно номер профиля жмем Enter, повторяем команду, снова Enter (в моем случае необходимо было добавить 74, 103, 151) Blue Dolphin устанавливаем в параметрах gnome-terminal профилем по умолчанию (профиль Default при этом не удаляем).
Если у вас в Ubuntu Desktop используется русская локализация, перед использованием интерактивной установки, нужно зайти в параметры gnome-terminal и нажав на + в Профили, добавить профиль с именем Default

Создаем скрипт изменения цветового профиля

nano change_ssh_color_profile.sh

Вставляем в открывшееся окно код скрипта

Вставляем в открывшееся окно код скрипта
Вставляем в открывшееся окно код скрипта

#!/bin/bash
# Функция для извлечения IP-адреса из аргументов
get_ip() {
# Предполагаем, что аргумент в формате user@host или просто host
for arg in "$@"; do
# Проверяем, содержит ли аргумент @ (формат user@host)
if [[ $arg == *@* ]]; then
# Извлекаем часть после @
ip=${arg#*@}
else
# Если нет @, считаем, что это IP или хост
ip=$arg
fi
# Проверяем, является ли строка IP-адресом (простая проверка)
if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "$ip"
return
fi
done
echo ""
}
# Извлекаем IP-адрес
IP=$(get_ip "$@")
# Определяем профиль в зависимости от IP
if [[ -z "$IP" ]]; then
# Если IP не удалось определить, используем профиль по умолчанию
PROFILE="Cobalt 2"
elif [[ "$IP" == 192.168.* ]]; then
# Тестовая среда (например, 192.168.x.x)
PROFILE="Grass"
elif [[ "$IP" == 10.* ]]; then
# Продакшн-среда (например, 10.x.x.x)
PROFILE="Freya"
else
# Для всех остальных IP используем профиль по умолчанию
PROFILE="Cobalt 2"
fi
# Запуск нового терминала с выбранным профилем
gnome-terminal --profile="$PROFILE" -- ssh "$@"

Сохраняем скрипт (Ctrl+o,Enter, Ctrl+x)

Делаем скрипт исполняемым

chmod +x ~/change_ssh_color_profile.sh

Добавляем Alias в .bashrc

echo "alias ssh='~/change_ssh_color_profile.sh'" >> ~/.bashrc

Применяем изменения в gnome-terminal

source ~/.bashrc

Проверяем подключение по SSH

ssh user@host

как результат у вас должно открыться отдельное окно с удаленным хостом, с выбранным вами цветовым профилем

как результат у вас должно открыться отдельное окно с удаленным хостом, с выбранным вами цветовым профилем
как результат у вас должно открыться отдельное окно с удаленным хостом, с выбранным вами цветовым профилем

#linux #terminal