Como obtenho prompts de cores diferentes dependendo do servidor?

Como obtenho prompts de cores diferentes dependendo do servidor?

Eu uso ssho tempo todo, mas às vezes esqueço em qual servidor estou.

Posso usar o mesmo .bashrc(/home é compartilhado por NFS) e ter prompts de cores diferentes em servidores diferentes? De preferência sem listar os servidores.

Responder1

Algo assim:

set_color_prompt() {
    _colorcombos() {
    PERL_HASH_SEED=109 perl -MB -e '
        use B;
        # color combinations that are readable (e.g. no red on red)
        @c =(map { "$_\n0\n" }
             6..7,9..11,13..15,40..51,75..87,113..123,147..159,171..231,249..254),
            (map { "$_\n231\n" }
             1..9,12..13,16..45,52..81,88..116,124..151,153,160..180,
             182..185,187..189,196..214,232..252,255..254);
        for(@ARGV) {
            print @c[hex(B::hash($_)) % $#c];
        }
        ' "$@"
    }
    local col=($(_colorcombos `whoami` `hostname` "`id`"))
    # (bg1,fg1)=user, (bg2,fg2)=host, (bg3,fg3)=path
    PS1='${debian_chroot:+($debian_chroot)}\[\033[48;5;'${col[0]}';38;5;'${col[1]}'m\]\u\[\033[00m\]\[\033[48;5;'${col[2]}';38;5;'${col[3]}'m\]@\h\[\033[00m\]:\[\033[48;5;'${col[4]}';38;5;'${col[5]}'m\]\w\[\033[00m\]\$ '
}

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color)
    set_color_prompt
    ;;
xterm-256color)
    set_color_prompt
    ;;
*)
    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
    ;;
esac

Ele definirá um prompt colorido com base em e whoami, portanto, a cor também será diferente se você fizer login como um usuário diferente.hostnameid

whoami, hostnamee idsão hash e, com base no valor do hash, uma combinação de cores é escolhida. As combinações são testadas para garantir que sejam legíveis.

Mude PERL_HASH_SEED=109para obter cores diferentes (por exemplo, se dois servidores importantes derem o mesmo valor).

informação relacionada