Как автоматически изменить фон терминала на основе имени ssh?

Как можно прогматически изменить цвет фона окна терминала на основе имени хоста, в которое вы попали?

т.е. когда я нахожусь в живых встроенных системах на оборудовании для производства, я хочу, чтобы фон терминала изменился на красный – чтобы «поддерживать осведомленность» о том, на каком сервере я работаю. Простое имя хоста в PS1 не всегда достаточно.

Я использую gnome-терминал, но принимаю любое работоспособное решение под Linux.

  • Как программно контролировать пересылаемые приложения X11?
  • sign_and_send_pubkey: сбой подписи: агент отказался от операции CentOS 7 только между определенными серверами
  • Различные конфигурации для клиента ssh в зависимости от IP-адреса или имени хоста
  • Есть ли способ сделать функцию просмотра vnc, например, Xming, позволяя свободно перемещать окна Linux?
  • Разрешение папки DD-WRT и / bin
  • Условия, отправленные через ssh, выполняются локально, а не удаленно
  • Проблемы с Gnu Screen и vi - визуализация
  • Как открыть порт SSH 22?
  • One Solution collect form web for “Как автоматически изменить фон терминала на основе имени ssh?”

    Вы можете использовать ssh LocalCommand для извлечения escape-последовательности ANSI, чтобы изменить цвет фона, и иметь раздел на хост (или шаблон хоста), чтобы выбрать соответствующий цвет, который вы хотите соответствовать удаленному хосту.

    Если ваши производственные серверы следуют соглашению об именах, например «начинается с prod», вы можете попробовать следующий фрагмент в файле ~ / .ssh / config: Host prod* PermitLocalCommand yes LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"

    Если для использования шаблонов подстановочных знаков нет удобного соглашения об именах, вы можете просто перечислить имена хостов, разделенные пробелами. Вы можете создавать дополнительные хост-блоки с разными значениями цвета и строками для других других непроизводственных серверов.

    После подключения к узлу, который соответствует шаблону, соответствующий printf будет выполняться локально, изменив цвет фона на красный ([41m выбирает красный цвет в качестве цвета фона, [2J часть отображает весь экран с обновленным цветом фона. https://en.wikipedia.org/wiki/ANSI_escape_code для большего количества опций)

    Самая большая неприятность в этом подходе заключается в том, что цвет фона сохраняется при выходе из сеанса ssh; Нет никакого аналога LocalCommand для запуска при отключении (что я знаю). Сценарий оболочки alias или оболочки для ssh может вызывать printf "\x1b[0m" в качестве сброса. С другой стороны, наличие цвета фона, заданного с помощью LocalCommand, означает, что вы получите набор цветов, даже если ssh не запускается через сценарий оболочки или псевдоним.

    Linux и Unix - лучшая ОС в мире.