чего я хочу достичь:

каждый раз, когда я захожу на машину через ssh с определенным пользователем -> "опасность", как ssh danger@somehost

Я хочу, чтобы терминал изменил свой фон на красный, поэтому у меня есть визуальная обратная связь, что я в bash с конкретным пользователем, а не с терминалом на моей собственной машине.

Я могу только установить параметры вручную, и у меня нет подсказки, должно быть что-то, что я могу написать в bashprofile или около того ?!

за любую подсказку, заранее спасибо!

1 ответ1

1

Я сделал это, используя iTerm2 и немного AppleScript. Вот функция для оболочек (bash или zsh), которая меняет цвет фона:

function iterm_bg_color() {
  local tty=$(tty)
  osascript -e "
    tell application \"iTerm\"
      repeat with theTerminal in terminals
        tell theTerminal
          try
            tell session id \"$tty\"
              set background color to {(($1 * 257)), (($2 * 257)), (($3 * 257))} as RGB color
            end tell
          on error errmesg number errn
          end try
        end tell
      end repeat
    end tell"
}

Используйте это, чтобы превратить фон в красный:

$ iterm_bg_color 255 0 0

Я также сделал несколько псевдонимов для быстрого запуска ssh от имени какого-то пользователя, вот так:

alias ssd="iterm_bg_color 30 0 0; ssh danger@somehost; iterm_bg_color 0 0 0"

Или вы можете написать оболочку, которая будет окрашивать ssh исключительно на основе пользователя. Как то так, для bash:

function ssh() {
    if [[ $1 == danger@* ]]; then
        iterm_bg_color 50 0 0
        /usr/bin/ssh "$@"
        iterm_bg_color 0 0 0
    else
        /usr/bin/ssh "$@"
    fi
}

или для zsh:

function ssh() {
    if [[ "$1" =~ "danger@.*" ]]; then
        iterm_bg_color 50 0 0
        /usr/bin/ssh $*
        iterm_bg_color 0 0 0
    else
        /usr/bin/ssh $*
    fi
}

Просто поместите iterm_bg_color в конфигурацию вашей оболочки (~/.bash_profile или ~/.zshrc соответственно) и добавьте функцию ssh() (или псевдоним), чтобы она автоматически окрашивалась при подключении.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .