Prompts de cores diferentes para máquinas diferentes ao usar o terminal / ssh?

11

Eu tenho 5 máquinas que eu constantemente ssh para fazer o trabalho. Está ficando cada vez mais frustrante quando estou emitindo comandos errados em caixas erradas. Felizmente ainda não fiz nada de mal. Eu queria saber se há algum hack que eu possa hardcode que irá exibir o meu prompt em cores diferentes com base na máquina que eu sou ssh em? Como azul para desktop1, roxo para laptop, vermelho para servidor etc? Isso é possível?

Atualmente estou usando este comando export PS1="\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" tirado daqui link mas obviamente não funciona em ssh.

Além disso, se você tiver outras dicas interessantes para me ajudar a aliviar a minha visão será maravilhoso. Eu tenho essa dica que colore as man pages.

link

    
por bcrawl 11.01.2011 / 14:37

5 respostas

11

O método que uso é para gerar uma cor para o nome do host a partir do nome do host. Não há muitas cores para escolher, por isso será fácil gerar conflitos, mas é útil para a pequena quantidade de máquinas que eu gerencio.

hostnamecolor=$(hostname | od | tr ' ' '\n' | awk '{total = total + $1}END{print 30 + (total % 6)}')

PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\[\e[${hostnamecolor}m\]\]\h \[\e[32m\]\w\[\e[0m\]\n$ '

A primeira linha gera um número entre 30 (inc) e 36 (exc) do nome do host da máquina. A segunda linha aplica-o ao prompt com nome de usuário e caminho em verde (32) e o nome do host na cor gerada.

Não há cores de fundo definidas e eu excluo ciano (36) e branco (37) do primeiro plano para evitar conflitos com os planos de fundo dos terminais que eu uso.

    
por 09.09.2012 / 02:15
2

Você está no caminho certo. Eu usei o método detalhado na página que você linkou e exatamente detalhado como no meu blog . Ele funciona para mim usando o PuTTY de uma caixa do Windows e também o SSH de um servidor CentOS para outro. Se não estiver funcionando para você e você tiver certeza de que a sintaxe está correta, pode ser que o seu cliente SSH esteja disponível.

    
por 11.01.2011 / 14:48
0

Você pode alterar o bash.rc em cada máquina para fornecer cores de prompt diferentes. Ou se você tiver privilégios suficientes alter sshd config para permitir a transferência do ambiente do usuário através da diretiva PermitUserEnvironment .

    
por 11.01.2011 / 14:57
0

No meu trabalho, temos diferentes estágios de servidores

produção encenação desenvolvimento

Eu uso um prompt vermelho como prod e green para encenação. Agora todas as máquinas de teste têm stg no domínio.

Então prod seria

web1.domain.com
web2.domain.com

Staging / Dev seria

stg-web1.domain.com
stg-web2.domain.com
dev-web1.domain.com
etc

Isso só funcionará para o redhat / centos

Mas para servidores prod eu tenho o seguinte em

/etc/sysconfig/bash-prompt-xterm

Dentro é

export PS1="\[[\e[1;31m\]\u@\[\e[1;31m\]\h\[\e[0m\] \W] "

Isso tornará o aviso vermelho. Agora você não pode tocar em / etc / bashrc e todas as outras máquinas que não são produções permanecerão na cor normal de primeiro plano que você usa ... mas eu as tornei verdes

if [ "$PS1" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='echo -ne "3]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "
web1.domain.com
web2.domain.com
7"' fi ;;

Que se bloco deve estar lá .. Eu apenas mudei a cor na outra parte para ser verde .. 33 é verde

    
por 11.01.2011 / 15:10
0

Estamos trabalhando em uma solução mais abrangente baseada em checksum string hostname em esta essência incl. Compatibilidade de 256 cores. Além do caso em que você está realmente interessado em determinar uma cor específica para cada um dos seus servidores, eu sinto que esse é um dos problemas de "isso é o que temos computadores", então, obter cores "aleatórias" determinadas para você com base em somas de verificação devem ser uma boa abordagem.

    
por 13.10.2011 / 21:43