muda a aparência do terminal de acordo com o servidor

2

Eu tenho dois servidores diferentes (todos executando Linux) aos quais me conecto via ssh. Após o login, todo o plano de fundo do terminal parece igual. Eu quero ter tema de cor diferente ou plano de fundo para servidores diferentes. Por exemplo, se eu ssh para server-1, meu plano de fundo do terminal fica cinza e se eu fizer login no servidor-2, ele ficará azul. Como posso conseguir isso?

Nota: estou usando o "MATE Terminal".

    
por d.putto 08.05.2015 / 18:12

1 resposta

3

No XTerm, você pode usar as seqüências de controle em seu .bashrc ou algo semelhante. Como:

if [ "${-//[!i]/}" = 'i' ]; then case $HOSTNAME in server1) echo -e '\e]11;darkgray\a\e]10;black\a' ;; server2) echo -e '\e]11;darkblue\a\e]10;gray\a' ;; esac fi

Outros emuladores de terminal têm características semelhantes.

No Putty, você pode configurar a cor diretamente, não tendo certeza se essas sequências de controle do XTerm funcionarão (elas não foram feitas em testes superficiais, no entanto, não olhei minhas configurações).

O motivo para verificar o sinalizador interativo do shell em vez de ser um terminal (isto é, status de saída de tty ou [ -t 1 ] ) é, em alguns casos (por exemplo, Ansible), um tty pode ser alocado ( ssh -tt ) para processamento em lote e saída para stdout em tal circunstância pode tornar o fluxo não "limpo", o que pode causar problemas (por exemplo, Ansible).

Nota: Eu testei [ "${-//[!i]/}" = 'i' ] para as versões do bash, mksh, zsh e ksh disponíveis para o Centos 7, e funcionou em todas elas.

    
por 08.05.2015 / 18:27