Alterar a cor do terminal quando SSH de OS-X

Meu terminal

  • Use o iTerm2 como meu terminal
  • zsh como o escudo
  • oh-my-zsh para gerenciar configurações zsh
  • Mais informações – meu terminal personalizado

Cenário

fundo

  • No dia de hoje, desenvolvimentos e implantações, temos que fazer ssh em diferentes máquinas / servidores
  • Por exemplo, podemos ter que ssh em

    1. Servidores de produção
    2. Servidores de teste
    3. Caixas amazônicas
    4. Servidores de teste locais etc.
  • O comportamento usual é abrir uma nova aba do terminal e iniciar a sessão ssh

  • Às vezes podemos ter várias sessões ssh em diferentes guias de terminal simultaneamente

  • Nessas situações, é um pouco confuso identificar onde estou (em qual host estou atualmente)

  • Para resolver este problema confuso, podemos usar diferentes temas de terminal (cores de terminal) para diferentes sessões de ssh

Perfis do iTerm com oh-my-zsh

  • No meu cenário, estou usando diferentes perfis do iTerm com diferentes temas (cores)
  • Estou carregando esses perfis de terminal quando ssh em ambientes diferentes
  • É (seleção de perfil de terminal) feito usando o comando personalizado oh-my-zsh (script de shell)
  • No meu cenário, estou usando três perfis diferentes de iTerm (com cores diferentes) para a sessão de ssh

    1. Sessão SSH de produção – cor vermelho escuro
    2. Sessão de teste SSH – cor roxa escura
    3. Outra sessão ssh – cor azul escuro
  • Você pode usar diferentes temas do iTerm para obter diferentes cores de terminal – temas do iTerm

  • A seguir estão as etapas que precisam ser seguidas a fim de alterar a cor do terminal ao fazer SSH

1. Crie perfis de terminal do iTerm

  • Vá para as preferências do iTerm e crie perfis de acordo com seus ambientes SSH
  • No meu cenário, tenho 4 perfis de iTerm
  • Defaultperfil usa no terminal local e outros três perfis ( Production, Staginge Other) usam em diferentes sessões ssh

Cenário

2. Crie um script de shell personalizado

  • Vá para e crie um arquivo~/.oh-my-zsh/customiTrem2-ssh.zsh

Cenário

  • Coloque o seguinte conteúdo em um arquivoiTrem2-ssh.zsh
function tabc() {
NAME
=$1; if [ -z "$NAME" ]; then NAME="Default"; fi
# if you have trouble with this, change
# "Default" to the name of your default theme
echo
-e "\033]50;SetProfile=$NAME\a"
}

function tab-reset() {
NAME
="Default"
echo
-e "\033]50;SetProfile=$NAME\a"
}

function colorssh() {
if [[ -n "$ITERM_SESSION_ID" ]]; then
trap
"tab-reset" INT EXIT
if [[ "$*" =~ "production*" ]]; then
tabc
Production
elif [[ "$*" =~ "staging*" ]]; then
tabc
Staging
else
tabc
Other
fi
fi
ssh $
*
}
compdef _ssh tabc
=ssh

alias ssh="colorssh"
  • colorssh() função de seleção de perfil de terminal diferente de acordo com o host ssh’ing
  • Seleciona

    1. Productionperfil quando ssh para o servidor de produção ( ssh eranga@production_box)
    2. Stagingperfil quando ssh para o servidor de teste ( ssh eranga@staging_box)
    3. Other perfil quando ssh para qualquer outro servidor (servidor local, Amazon Box etc)

    Altere de acordo com seus nomes de perfiltabc <profile-name>

  • tab-reset()função redefinir o perfil do terminal para o Defaultperfil ao sair da sessão ssh

  • alias ssh="colorssh"cria um alias para ssh (ao executar a sshpartir do terminal, ele chama a colorsshfunção)

  • Você pode obter este código no meu github

Exemplo de sessão de terminal

  • Terminal padrão

Cenário

  • SSH em produção ( ssh eranga@production_box1)

Cenário

  • SSH em estadiamento ( ssh eranga@staging_box1)

Cenário

  • SSH em outro servidor ( )ssh eranga@10.2.4.201

Cenário

Referência