Różne monity kolorów dla różnych maszyn, gdy używasz terminala / ssh?

12

Mam 5 maszyn, w których stale pracuję. To staje się coraz bardziej frustrujące, gdy wydaje złe polecenia na niewłaściwych polach. Na szczęście nie zrobiłem jeszcze nic złego. Chciałem wiedzieć, czy jest jakiś hack, który mogę zaprogramować na stałe, który wyświetla moje monity w różnych kolorach w zależności od komputera, na którym jestem ssh? Takich jak niebieski dla desktop1, fioletowy dla laptopa, czerwony dla serwera itp.? czy to możliwe?

Obecnie używam tego polecenia export PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" wzięty stąd http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix / ale oczywiście nie działa w ssh.

Poza tym, jeśli masz jakieś inne fajne wskazówki, które pomogą mi się uspokoić, mój wzrok będzie wspaniały. Mam tę wskazówkę, która koloruje strony podręcznika.

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

bcrawl
źródło
1
name@ ** server** Linia przed każdym poleceniu nie oddaje tego, co Twój na serwer? Trzeba się przyzwyczaić, ale to najlepszy istniejący sposób
TheLQ
Na jakim systemie operacyjnym działa Twój laptop?
SamK
1
name @ server jest szczególnie nieprzydatny, gdy używa się takich rzeczy jak chmura Amazon, ponieważ zmienia każdy rozruch i nie przekazuje przeznaczenia pudełka ani łatwej do zapamiętania nazwy (użytkownik @ ip-xxxx). Więc +1 za to pytanie :)
Rafiq Maniar

Odpowiedzi:

11

Stosowanie metody I jest generowanie kolor dla hosta z hosta. Nie ma wielu kolorów do wyboru, więc z łatwością będzie generować starcia, ale jest to przydatne w przypadku niewielkiej liczby maszyn, którymi zarządzam.

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

Pierwszy wiersz generuje liczbę między 30 (inc) a 36 (exc) z nazwy hosta komputera. Drugi wiersz stosuje go do monitu z nazwą użytkownika i ścieżką w kolorze zielonym (32) oraz nazwą hosta w wygenerowanym kolorze.

Nie ustawiono kolorów tła i wykluczam cyjan (36) i biel (37) z pierwszego planu, aby uniknąć kolizji z tłem używanych przeze mnie terminali.

Dan Midwood
źródło
Czy może generować ten sam kolor dla pierwszego planu i tła?
Chris S
Kolor tła nie jest generowany. Ale masz rację, że wygenerowany kolor może pasować do tła. Wykluczam biały (37) i cyjan (36), ponieważ nie działają one dobrze z terminalnymi środowiskami, których używam. Zredagowałem odpowiedź, aby to wyjaśnić.
Dan Midwood,
3

Jesteś na dobrej drodze. Użyłem metody opisanej na stronie, do której prowadzi link, i dokładnie opisałem dokładnie, jak na moim blogu . Działa dla mnie za pomocą PuTTY z okna systemu Windows, a także SSH z jednego serwera CentOS na inny. Jeśli to nie działa i masz pewność, że masz poprawną składnię, może to zależeć od twojego klienta SSH.

dunxd
źródło
Cześć, zmieniłem .bashrc i rozumiem, że mogę zmieniać kolory lokalnie. To, czego chciałem, to to, że kiedy ssh na innym komputerze, szybka zmiana kolorów. Wiem, że terminal nie będzie wiedział automatycznie, więc szukałem wskaźników, aby to się stało.
bcrawl
1
Edycja: ok, tak, masz rację. Jeśli plik .bashrc zostanie zmieniony na każdym komputerze, podczas ssh wyświetli skonfigurowane kolory. Nie edytowałem właściwego pliku. Dzięki. Rozważ to rozwiązane.
bcrawl
2
Jeśli ta odpowiedź doprowadziła Cię bezpośrednio do rozwiązania, zastanów się nad oznaczeniem tego jako odpowiedzi zaakceptowanej, klikając kontur znacznika wyboru po lewej stronie odpowiedzi.
Kevin M.
1

W mojej pracy mamy różne etapy serwerów

rozwój inscenizacji produkcji

Używam czerwonego podpowiedzi jako dźgnięcia i zielonego do inscenizacji. Teraz wszystkie maszyny przemieszczające mają stg w domenie.

Tak byłoby

web1.domain.com
web2.domain.com

Staging / Dev byłoby

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

To naprawdę działa tylko dla redhat / centos

Ale dla serwerów prod mam następujące

/etc/sysconfig/bash-prompt-xterm

W środku jest

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

To zmieni kolor zachęty na czerwony .. Teraz nie możesz dotknąć / etc / bashrc, a wszystkie inne nieprodukowane maszyny pozostaną normalnym kolorem pierwszego planu, którego używasz .. ale zrobiłem je zielone

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
                ;;

Że jeśli blok powinien tam być… Właśnie zmieniłem kolor w drugiej części na zielony. 33 jest zielony

Mikrofon
źródło
0

Możesz zmienić plik bash.rc na każdym komputerze, aby nadać im różne szybkie kolory. Lub jeśli masz wystarczające uprawnienia, zmień konfigurację sshd, aby umożliwić transfer środowiska użytkownika za pomocą PermitUserEnvironmentdyrektywy.

teista
źródło
0

Pracujemy nad bardziej kompleksowym rozwiązaniem opartym na sumie kontrolnej ciągów nazw hostów w tym zestawieniu, w tym. Kompatybilność 256 kolorów. Poza przypadkiem, w którym naprawdę chcesz samodzielnie określić konkretny kolor dla każdego z serwerów, wydaje mi się, że jest to jeden z tych „problemów z komputerami”, więc określenie „losowych” kolorów zależy od Ciebie sumy kontrolne powinny być dobrym podejściem.

lkraav
źródło