Como alterar automaticamente o segundo plano do terminal, com base no nome do host ssh?

8

Como é possível alterar progressivamente a cor de fundo de uma janela de terminal, com base no nome do host em que você está ssh?

ou seja, quando eu sou ssh em sistemas embarcados ao vivo em hardware de produção, desejo que o plano de fundo do terminal mude para vermelho - para "manter a consciência" de qual servidor eu estou. Ter apenas o nome do host no PS1 nem sempre é suficiente.

Estou usando o gnome-terminal, mas aceito qualquer solução viável no Linux.

    
por Mtl Dev 19.12.2016 / 16:08

1 resposta

6

Você pode usar o ssh LocalCommand para emitir a sequência de escape ANSI para alterar a cor do plano de fundo e ter uma seção por host (ou padrão de host) para selecionar a cor apropriada que deseja corresponder ao host remoto.

Se seus servidores de produção seguirem uma convenção de nomenclatura como "starts with prod", você pode tentar o seguinte snippet em seu arquivo ~ / .ssh / config: Host prod* PermitLocalCommand yes LocalCommand printf "\x1b[41m\x1b[2JPRODUCTION SYSTEM [%n]\n\n"

Se não houver uma convenção de nomenclatura útil para usar padrões de curinga, você poderá listar os nomes de host separados por espaços. Você também pode criar blocos Host adicionais com diferentes valores e sequências de cores para vários outros servidores que não são de produção.

Após conectar-se a um host que corresponda ao padrão, o printf correspondente será executado localmente, mudando a cor de fundo para vermelho (a [41m escolhe vermelho como cor de fundo, a parte [2J repinta a tela inteira com o plano de fundo atualizado) veja link para mais opções)

O maior incômodo desta abordagem é que a cor de fundo persiste ao sair da sessão ssh; Não há contrapartida para o LocalCommand para ser executado na desconexão (que eu saiba). Um script de alias ou shell wrapper para ssh poderia invocar printf "\x1b[0m" como uma redefinição. Por outro lado, ter a cor de fundo definida via LocalCommand significa que você obterá o conjunto de cores mesmo se o ssh não for executado por meio de um script ou alias de wrapper.

    
por 20.12.2016 / 01:10