Как я могу изменить внешний вид терминала (Linux), когда я подключу SSH к удаленной машине?

Иногда я нахожусь с несколькими терминалами, некоторые из которых подключены к другим (производственным) машинам. Если я запустил команду, как «удалить все таблицы в базе данных» на одном из этих ssh-ed терминалов, я могу потенциально уничтожить тонны данных клиента. Но в разработке, конечно, мне нужно время от времени запускать эти команды.

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

Детали изменения внешнего вида не важны, хотя: важно то, что сразу становится очевидным, что мне нужно быть более осторожным при работе над терминалом, который где-то был ssh-ed. Это возможно?

PS Я нашел контекстную SSH , которая именно то, что я хочу … кроме того, что это только для Mac 🙁

Я бы предложил установить ваш PS1 на соответствующую информацию, такую ​​как имя хоста, и т. Д. Вы можете проверить man-страницу вашего shell of choice для деталей.

Пример вещей, которые вы могли бы сделать для своего PS1 в bash

У меня сам есть тест в моей подсказке ~ / .subbash /, которая устанавливает цвет подсказки на основе сервера. *

* См. Функцию __prompt_command ()

Способы Вы можете изменить свой PS1

Существует несколько способов настройки PS1. Похоже, вы хотите что-то более заметное, поэтому мои примеры будут немного сложнее, чем просто добавить \H в PS1. Чтобы использовать любое из следующих действий, вы можете добавить их в свой ~/.bashrc (на удаленных серверах, если не на обоих. Я синхронизирую один и тот же conf между всеми моими компьютерами)

Примечание. Чтобы сделать их более читаемыми, следующее предполагает, что эти vars объявлены.
Var можно легко заменить содержимым.
Кроме того, эти примеры основаны на bash, вам, возможно, придется настраивать другие оболочки.

 RCol='\[\e[0m\]' # Text Reset Red='\[\e[0;31m\]' # Red Gre='\[\e[0;32m\]' # Green Yel='\[\e[0;33m\]' # Yellow Blu='\[\e[0;34m\]' # Blue Pur='\[\e[0;35m\]' # Purple Cya='\[\e[0;36m\]' # Cyan Whi='\[\e[0;37m\]' # White 

Проверка корня

Одна вещь, которая может вам понравиться, – это тест USER, потому что, если он является корневым или, возможно, только «производственным» аккаунтом:

 if [ $UID -eq "0" ];then PS1="${Red}\h \W ->${RCol} " # Set prompt for root else PS1="\h \W -> " fi 

Это сделает подсказку красной, если вы используете root.

Проверка хоста

Вы также можете проверить информацию о текущем компьютере и задать цвета на основе этого:

 PS1= PSCol= if [ $HOSTNAME == 'moving-computer-of-doom' ]; then PSCol="$Cya" # For Main Computer elif [ $HOSTTYPE == 'arm' ]; then PSCol="$Gre" # For pi elif [ $HOSTNAME == 'ma.sdf.org' ]; then PSCol="$Blu" # For MetaArray elif [[ $MACHTYPE =~ arm-apple-darwin ]]; then PSCol="$Gre" # For iOS elif [ $MACHTYPE == 'i486-pc-linux-gnu' ]; then PSCol="$Whi" # For Netbook elif [[ "$MACHTYPE" == "x86_64--netbsd" && "$OSTYPE" == "netbsd" ]]; then PSCol="$Yel" # For Main Cluster else PS1+="\h " # Un-designated catch-all fi PS1+="${PSCol}\W ->${RCol} " 

Это установит подсказку голубого цвета, если на моем ноутбуке, зеленый для моего pi или iOS и т. Д. И т. Д.
Если в списке не указано, оно добавит имя хоста в приглашение.
Поэтому, если на ваших производственных серверах было что-то, что было легко проверить (например, аналогичное имя хоста, вы можете использовать это)

PROMPT_COMMAND

По большей части выше это будет отлично работать без этого.
Если вы начнете добавлять вещи, которые вы хотели бы повторно оценивать чаще, логин (возможно, git-статус каталога), вы могли бы использовать функцию PROMPT_COMMAND для оценки PS1 после каждой команды.

Над этим прекрасно работает без этого.

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

Это отличная статья, которую я использовал для настройки моей подсказки bash:

http://www.ibm.com/developerworks/linux/library/l-tip-prompt/

Легко видеть, когда я нахожусь на моем сервере, поскольку я установил часть имени хоста моего приглашения красным.

Значение, которое я использую в качестве PS1 в файле bash_profile:

PS1 = "[\ е [32; 1m] \ и [\ е [0м] [\ е [34; 1m] @ [\ е [0м] [\ е [31; 1m] \ ч [\ е [0м] : [\ E [34; 1m] \ w $ [\ e [0m] "

Это дает мне имя пользователя в зеленом цвете, за которым следует синий знак «@», тогда имя хоста красное, а «~ $» – синим. Вероятно, вы можете увидеть, как легко настроить, чтобы помочь вам легко увидеть, когда вы вошли на разные серверы

Убедитесь, что вы правильно прочитали статью, так как она объясняет, как правильно избежать каждой последовательности. Неспособность избежать последовательности может привести к непредсказуемому поведению при вводе более длинных команд.

По-видимому, все предыдущие ответы работают только с Bash. Я использую Busybox на некоторых устройствах и поэтому нуждаюсь в альтернативе.

В соответствии с этим вы можете добавить общую строку к вашему сценарию входа в систему, который должен работать (и сделал для меня несколько разных хостов):

 echo -n "\033]0;${USER}@${HOSTNAME}: ${PWD}\007" 
  • PuTTY не отправляет Esc
  • Установить текущий рабочий каталог на ssh
  • Пропуск аутентификации Kerberos с помощью JSch
  • Как правильно настроить аутентификацию Win32-OpenSSH
  • SSH запрашивает пароль, даже если установлен открытый ключ
  • YouTube не работает через прокси-сервер SSH-туннеля на IP-адрес в США
  • X над SSH и xauth не работает
  • Неинтерактивный ssh ​​sudo ... запрашивает пароль в виде простого текста
  • Как использовать SSH для запуска сценария оболочки на удаленной машине?
  • Запуск rdesktop через SSH-туннель в одной команде
  • Почему мой .bashrc читается, когда я запускаю неинтерактивные команды по ssh
  • Давайте будем гением компьютера.