Richieste di colore diverso per macchine diverse quando si utilizza terminal / ssh?


11

Ho 5 macchine in cui lavoro costantemente. Sta diventando sempre più frustrante quando sto impartendo comandi sbagliati su scatole sbagliate. Fortunatamente non ho ancora fatto nulla di male. Volevo sapere se c'è qualche hack che posso hardcode che mostrerà il mio prompt in diversi colori in base alla macchina in cui mi trovo? Come blu per desktop1, viola per laptop, rosso per server ecc.? È possibile?

Attualmente sto usando questo comando export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" preso da qui http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix / ma ovviamente non funziona su ssh.

Inoltre, se hai altri consigli utili per aiutarmi ad alleviare la vista, sarà meraviglioso. Ho avuto questo suggerimento che colora le pagine man.

http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/


1
La riga name@ ** server** prima di ogni comando non trasmette su quale server sei acceso? Ci vuole un po 'per abituarsi, ma è il modo migliore esistente
TheLQ

Su quale sistema operativo sta lavorando il tuo laptop?
SamK,

1
name @ server è particolarmente inutile quando si usano cose come il cloud Amazon, perché cambia ogni avvio e non trasmette lo scopo della scatola o un nome facilmente memorizzabile (utente @ ip-xxxx). Quindi +1 per questa domanda :)
Rafiq Maniar,

Risposte:


11

Il metodo che uso è generare un colore per il nome host dal nome host. Non ci sono molti colori tra cui scegliere, quindi genererà facilmente degli scontri, ma è utile per la piccola quantità di macchine che gestisco.

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$ '

La prima riga genera un numero compreso tra 30 (inc) e 36 (exc) dal nome host della macchina. La seconda riga lo applica al prompt con nome utente e percorso in verde (32) e il nome host nel colore generato.

Non sono impostati colori di sfondo ed escludo il ciano (36) e il bianco (37) dal primo piano per evitare scontri con gli sfondi dei terminali che utilizzo.


Quindi può generare lo stesso colore sia per il primo piano che per lo sfondo?
Chris S,

Non viene generato alcun colore di sfondo. Ma hai ragione nel dire che il colore generato può corrispondere allo sfondo. Escludo il bianco (37) e il ciano (36) perché non funzionano bene con gli sfondi terminali che utilizzo. Ho modificato la risposta per chiarirlo.
Dan Midwood,

3

Sei sulla strada giusta. Ho usato il metodo dettagliato nella pagina a cui ti colleghi e ho spiegato esattamente come sul mio blog . Funziona per me usando PuTTY da una finestra di Windows e anche SSH da un server CentOS a un altro. Se non funziona per te e sei sicuro di avere la sintassi corretta, potrebbe essere il tuo client SSH.


Ciao, ho cambiato il .bashrc e capisco che posso cambiare i colori localmente. Quello che volevo era che quando ssh su un altro computer, il prompt cambia colore. So che il terminale non lo saprà automaticamente, quindi stavo cercando dei suggerimenti per farlo accadere.
riscritto l'

1
Modifica: ok, sì, hai ragione. Se il file .bashrc viene modificato su ciascun computer, quando si ssh, verranno visualizzati i colori configurati. Non stavo modificando il file giusto. Grazie. Consideralo risolto.
riscritto l'

2
Se questa risposta ti ha portato direttamente alla soluzione, allora considera di contrassegnarla come Risposta accettata facendo clic sul contorno di un segno di spunta a sinistra della risposta.
Kevin M,

1

Nel mio lavoro abbiamo diverse fasi di server

sviluppo della stadiazione della produzione

Uso un prompt rosso come prod e verde per la messa in scena. Ora tutte le macchine di gestione temporanea hanno stg nel dominio.

Quindi prod

web1.domain.com
web2.domain.com

La messa in scena / Dev sarebbe

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

Funzionerà davvero solo per redhat / centos

Ma per i server di produzione ho quanto segue

/etc/sysconfig/bash-prompt-xterm

Dentro c'è

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

In questo modo il prompt diventerà rosso. Ora non puoi toccare / etc / bashrc e tutte le altre macchine non prodotte manterranno il normale colore di primo piano che usi .. ma le ho rese verdi

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 "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'
                fi
                ;;

Che se il blocco dovesse essere lì .. Ho appena cambiato il colore sull'altra parte per essere verde .. 33 è verde


0

Puoi modificare bash.rc su ogni macchina per dargli diversi colori di prompt. Oppure, se hai abbastanza privilegi, modifica sshd config per consentire il trasferimento dell'ambiente utente tramite la PermitUserEnvironmentdirettiva.


0

Stiamo lavorando su una soluzione basata su checksum di stringa hostname più completa in questa sintesi incl. 256 compatibilità di colore. A parte il caso in cui sei effettivamente interessato a determinare tu stesso un colore specifico per ciascuno dei tuoi server, ritengo che questo sia uno di quei problemi "è quello che abbiamo i computer per", quindi ottenere colori "casuali" determinati in base a te i checksum dovrebbero essere un buon approccio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.