Compartilhe que você está se especializando

Quem trabalha com Linux e administração de servidores provavelmente já passou por esta situação: várias janelas de terminal abertas, algumas conectadas em produção, outras em homologação, desenvolvimento ou ambientes de teste.

O problema é que, visualmente, todos os terminais parecem iguais.

Você executa conecta em um servidor, depois conecta em outro e, depois de alguns minutos, surge aquela dúvida perigosa:

“Em qual servidor eu estou mesmo?”

Uma forma simples de reduzir esse risco é personalizar o prompt do shell, utilizando cores para identificar visualmente o ambiente em que você está conectado.

Além de deixar o terminal mais agradável, essa pequena configuração pode funcionar como uma espécie de “alerta visual”, principalmente para ambientes críticos.

O que é o prompt do Linux?

Quando abrimos um terminal, normalmente vemos algo parecido com:

login@servidor:~$

Esse texto é o prompt do shell.

Ele é controlado principalmente pela variável de ambiente PS1, podemos verificar seu conteúdo com:

echo $PS1

Em muitos sistemas, o resultado será algo semelhante a:

\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$

Parece complicado, mas basicamente estamos dizendo ao shell:

  • qual cor utilizar;
  • mostrar o usuário;
  • mostrar o hostname;
  • mostrar o diretório atual;
  • voltar à cor normal depois de cada elemento.

Ter cor diferentes no shell em cada ambiente, apesar de parecer bobo, ajuda a equipe a lembrar em que ambiente está e se torna útil para evitar erros quando estão com vários shells abertos no computador.

Para executar esse Post, consideramos um ambiente com padronização de nomes de servidores (contendo no nome sua função, como APP, DB, DMZ assim como o tipo de ambiente PRD ou HMG).

Entendo o que será feito

O que faremos é adicionar um script no Linux que irá obter o nome do servidor e definir uma cor de acordo com o nome (entendendo esse conceito abaixo, ficará mais fácil de você adaptar o script conforme seu ambiente):

Se o nome do servidorNo login aparecerá a mensagemA cor do shell será
Iniciar com appprd ou com dbprd— AMBIENTE PRD Vermelho
Iniciar com apphmg ou com dbhmg— AMBIENTE HMGVerde
Iniciar com dmz— AMBIENTE DMZRoxo
Se não for nenhum nome acima— AMBIENTE DESCONHECIDOAzul

É possível também criar outros padrões de nomes e resultar em outros padrões de cores (por exemplo, diferenciar ainda servidores de banco de servidores de aplicação, ou fazer regra ainda baseado no IP do servidor). Caso queira ver a lista de visuais para o Shell acesse github/JBlond.

Configurando no Ubuntu ou Debian

No shell, como root, execute:

vim /etc/update-motd.d/99-motd-color

Dentro, pressione a tecla INSERT de seu teclado para entrar em modo de inserção e altere a linha abaixo:

#!/bin/bash
# COLOR - Red(31), Green(32), Yellow(33), Blue(34), Purple(35), Cyan(36), White(37)
HOSTNAME=$(hostname -s)
HOSTNAME="${HOSTNAME,,}"
case "$HOSTNAME" in
    appprd-*|dbprd-*)
        COLOR="31"
        ENVIRONMENT="PRD"
    ;;
    apphmg-*|dbhmg-*)
        COLOR="32"
        ENVIRONMENT="HMG"
    ;;
    dmz-*)
        COLOR="35"
        ENVIRONMENT="DMZ"
    ;;
    *)
        COLOR="36"
        ENVIRONMENT="DESCONHECIDO"
    ;;
esac
printf "\033[${COLOR}m -- AMBIENTE ${ENVIRONMENT} \033[0m\n"

Ao final digite a tecla ESC, para sairdo modo de inserção, em seguida digite :wq! e pressione ENTER para sair e salvar. Agora execute:

chmod +x /etc/update-motd.d/99-motd-color

Configurando no RedHat, CentOS ou Rocky Linux

No shell, como root, execute:

vim /sbin/motd.sh

Dentro, pressione a tecla INSERT de seu teclado para entrar em modo de inserção coloque o seguinte conteúdo:

#COLOR - Red(31), Green(32),  Yellow(33), Blue(34), Purple(35), Cyan(36), White(37)
HOSTNAME=`hostname -s`
HOSTNAME="${HOSTNAME,,}"
case "$HOSTNAME" in
         appprd-*|dbprd-*)
                 COLOR="31"
                 ENVIRONMENT="PRD"
         ;;
         apphmg-*|dbhmg-*)
                 COLOR="32"
                 ENVIRONMENT="HMG"
         ;;
         dmz-*)
                 COLOR="35"
                 ENVIRONMENT="DMZ";;
         *)
                 COLOR="36"
                 ENVIRONMENT="DESCONHECIDO"
         ;;
esac 
printf "\033[${COLOR}m -- AMBIENTE ${ENVIRONMENT} \033[0m\n" 
export PS1="\[\e[1;${COLOR}m\]${PS1}\[\e[0m\]"

Ao final digite a tecla ESC, para sairdo modo de inserção, em seguida digite :wq! e pressione ENTER para sair e salvar. Agora execute:

chmod 644 /sbin/motd.sh
echo "#MOTD" >> /root/.bashrc
echo "source /sbin/motd.sh" >> /root/.bashrc

Fontes/Referências

https://gist.github.com/JBlond/2fea43a3049b38287e5e9cefc87b2124

Mais Informações

Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.

Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria