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

Введите: history -c; rm ~ / .bash_history

history -c очищает историю вашего текущего сеанса, rm ~ / .bash_history очищает вашу долгосрочную историю, поэтому history -c; rm ~ / .bash_history очищает оба.

9
19.12.2016, 17:08
1 ответ

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

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

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

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

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

7
27.01.2020, 20:07

Теги

Похожие вопросы