Lời nhắc màu khác nhau cho các máy khác nhau khi sử dụng terminal / ssh?


11

Tôi có 5 máy tôi liên tục ssh vào để làm việc. Nó ngày càng trở nên bực bội khi tôi phát lệnh sai trên các hộp sai. May mắn là tôi chưa làm gì xấu cả. Tôi muốn biết nếu có bất kỳ hack nào mà tôi có thể mã hóa cứng sẽ hiển thị lời nhắc của tôi với các màu khác nhau dựa trên máy tôi đang ssh vào? Chẳng hạn như màu xanh cho máy tính để bàn1, màu tím cho máy tính xách tay, màu đỏ cho máy chủ vv? Điều này có thể không?

Hiện tại tôi đang sử dụng lệnh này xuất PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" được lấy từ đây http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix / nhưng rõ ràng nó không hoạt động trên ssh.

Ngoài ra, nếu bạn có bất kỳ mẹo bash thú vị nào khác để giúp tôi dễ dàng nhìn thấy tôi sẽ rất tuyệt vời. Tôi có mẹo này màu sắc các trang người đàn ông.

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


1
Dòng name@ ** server** trước mỗi lệnh không chuyển tải máy chủ của bạn trên? Phải mất một số thời gian để làm quen, nhưng đó là cách tốt nhất hiện có
TheLQ

Hệ điều hành là máy tính xách tay của bạn làm việc trên?
SamK

1
name @ server đặc biệt không hữu ích khi sử dụng những thứ như đám mây Amazon, vì nó thay đổi mọi khởi động và không truyền đạt mục đích của hộp hoặc một tên dễ nhớ (người dùng @ ip-xxxx). Vì vậy, +1 cho câu hỏi này :)
Rafiq Maniar

Câu trả lời:


11

Các sử dụng phương pháp tôi là để tạo ra một màu cho hostname từ hostname. Không có nhiều màu sắc để lựa chọn, vì vậy nó sẽ dễ dàng tạo ra các xung đột, nhưng nó hữu ích cho số lượng nhỏ máy mà tôi quản lý.

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

Dòng đầu tiên tạo ra một số từ 30 (inc) đến 36 (exc) từ tên máy chủ của máy. Dòng thứ hai áp dụng nó cho lời nhắc với tên người dùng và đường dẫn màu xanh lá cây (32) và tên máy chủ trong màu được tạo.

Không có màu nền nào được đặt và tôi loại trừ màu lục lam (36) và màu trắng (37) khỏi nền trước để tránh xung đột với nền của các thiết bị đầu cuối mà tôi sử dụng.


Vì vậy, nó có thể tạo ra cùng một màu cho cả tiền cảnh và nền?
Chris S

Không có màu nền được tạo ra. Nhưng bạn đã đúng rằng màu được tạo ra có thể phù hợp với nền. Tôi loại trừ màu trắng (37) và màu lục lam (36) vì chúng không hoạt động tốt với nền thiết bị đầu cuối tôi sử dụng. Tôi đã chỉnh sửa câu trả lời để làm rõ điều đó.
Dan Midwood

3

Bạn đang đi đúng hướng. Tôi đã sử dụng phương pháp chi tiết trên trang bạn liên kết đến và chi tiết chính xác cách thức trên blog của tôi . Nó hoạt động với tôi bằng PuTTY từ hộp windows và SSH từ máy chủ CentOS này sang máy chủ khác. Nếu nó không hiệu quả với bạn và bạn chắc chắn rằng mình đã viết đúng cú pháp, nó có thể được gửi xuống máy khách SSH của bạn.


Xin chào, tôi đã thay đổi .bashrc và tôi hiểu rằng tôi có thể thay đổi màu cục bộ. Điều tôi muốn là khi tôi ssh đến một máy tính khác, màu nhắc sẽ thay đổi. Tôi biết rằng thiết bị đầu cuối sẽ không biết tự động vì vậy tôi đã tìm kiếm con trỏ để thực hiện điều này.
bcrawl

1
Chỉnh sửa: ok, vâng bạn đúng. Nếu tệp .bashrc bị thay đổi trên mỗi máy tính, khi bạn ssh, nó sẽ hiển thị màu được cấu hình của nó. Tôi đã không chỉnh sửa đúng tập tin. Cảm ơn. Hãy xem xét nó đã được giải quyết.
bcrawl

2
Nếu câu trả lời này dẫn bạn trực tiếp đến giải pháp, thì hãy xem xét việc đánh dấu đây là Câu trả lời được chấp nhận bằng cách nhấp vào phác thảo của một dấu kiểm ở bên trái của câu trả lời.
Kevin M

1

Trong công việc của tôi, chúng tôi có các giai đoạn khác nhau của máy chủ

phát triển dàn sản xuất

Tôi sử dụng một dấu nhắc màu đỏ là prod và màu xanh lá cây để dàn dựng. Bây giờ tất cả các máy dàn có stg trong miền.

Vì vậy, prod sẽ được

web1.domain.com
web2.domain.com

Dàn dựng / Dev sẽ là

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

Điều này sẽ chỉ thực sự làm việc cho redhat / centos

Nhưng đối với các máy chủ prod tôi có những điều sau đây

/etc/sysconfig/bash-prompt-xterm

Bên trong là

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

Điều đó sẽ chuyển sang dấu nhắc màu đỏ .. Bây giờ bạn không thể chạm / etc / bashrc và tất cả các máy không phải prod khác sẽ giữ màu nền trước bình thường mà bạn sử dụng .. nhưng tôi đã làm cho chúng có màu xanh

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

Rằng nếu khối nên ở đó .. Tôi chỉ thay đổi màu trên phần khác thành màu xanh lá cây .. 33 là màu xanh lá cây


0

Bạn có thể thay đổi bash.rc trên mỗi máy để đưa ra các màu nhắc khác nhau. Hoặc nếu bạn có đủ đặc quyền thay đổi cấu hình sshd để cho phép chuyển môi trường người dùng thông qua lệnh PermitUserEnvironment.


0

Chúng tôi đang làm việc trên một giải pháp tổng kiểm tra chuỗi tên máy chủ toàn diện hơn trong ý chính này . Tương thích 256 màu. Ngoài trường hợp bạn thực sự quan tâm đến việc xác định màu sắc cụ thể cho từng máy chủ của mình, tôi cảm thấy đây là một trong những vấn đề "đó là những gì chúng ta có máy tính", do đó, việc xác định màu sắc "ngẫu nhiên" cho bạn dựa trên tổng kiểm tra nên là một cách tiếp cận tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.