มีการแจ้งเตือนสีแตกต่างกันสำหรับเครื่องที่แตกต่างกันเมื่อใช้เทอร์มินัล / ssh?


12

ฉันมี 5 เครื่องที่ฉันทำงานอยู่ตลอดเวลา มันน่าผิดหวังมากขึ้นเมื่อฉันออกคำสั่งผิดในกล่องที่ไม่ถูกต้อง โชคดีที่ฉันยังไม่ได้ทำอะไรที่ไม่ดีเลย ฉันต้องการทราบว่ามีแฮ็กใดบ้างที่ฉันสามารถเข้ารหัสซึ่งจะแสดงข้อความแจ้งของฉันเป็นสีต่าง ๆ ตามเครื่องที่ฉันใช้อยู่ เช่นสีน้ำเงินสำหรับ desktop1, ม่วงสำหรับแล็ปท็อป, สีแดงสำหรับเซิร์ฟเวอร์ ฯลฯ ? เป็นไปได้ไหม

ขณะนี้ฉันกำลังใช้คำสั่งนี้ส่งออก PS1 = "\ e [0; 31m [\ u @ \ h \ W] \ $ \ e [m" นำมาจากที่นี่http://www.cyberciti.biz/faq/bash-shell -change-the-color-of-my-shell-prompt-under-linux-or-unix / แต่เห็นได้ชัดว่ามันใช้งานไม่ได้กับ ssh

นอกจากนี้หากคุณมีเคล็ดลับทุบตีเด็ด ๆ อื่น ๆ ที่ช่วยให้ฉันผ่อนคลายสายตาของฉันจะยอดเยี่ยม ฉันได้รับเคล็ดลับนี้ซึ่งสีคนหน้า

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


1
บรรทัดname@ ** server** ก่อนที่แต่ละคำสั่งจะไม่ถ่ายทอดเซิร์ฟเวอร์ของคุณ มันใช้เวลาทำความคุ้นเคย แต่วิธีที่ดีที่สุดที่มีอยู่
TheLQ

แลปท็อปของคุณใช้ระบบปฏิบัติการอะไรได้บ้าง
SamK

1
เซิร์ฟเวอร์ name @ นั้นไม่ช่วยเหลือเป็นพิเศษเมื่อใช้สิ่งต่าง ๆ เช่น Amazon cloud เพราะมันเปลี่ยนทุกการบู๊ตและไม่ได้ถ่ายทอดวัตถุประสงค์ของกล่องหรือชื่อที่จดจำได้ง่าย (user @ ip-xxxx) ดังนั้น +1 สำหรับคำถามนี้ :)
Rafiq Maniar

คำตอบ:


11

ใช้วิธีผมคือการสร้างสีสำหรับชื่อโฮสต์จากชื่อโฮสต์ที่ ไม่มีสีให้เลือกมากมายดังนั้นมันจะสร้างการปะทะกันได้ง่าย แต่มันมีประโยชน์สำหรับเครื่องจักรขนาดเล็กที่ฉันจัดการ

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

บรรทัดแรกสร้างหมายเลขระหว่าง 30 (inc) และ 36 (exc) จากชื่อโฮสต์ของเครื่อง บรรทัดที่สองใช้กับพรอมต์ด้วยชื่อผู้ใช้และพา ธ เป็นสีเขียว (32) และชื่อโฮสต์ในสีที่สร้างขึ้น

ไม่มีการตั้งค่าสีพื้นหลังและฉันแยกสีฟ้า (36) และสีขาว (37) ออกจากเบื้องหน้าเพื่อหลีกเลี่ยงการปะทะกับพื้นหลังของเทอร์มินัลที่ฉันใช้


ดังนั้นมันสามารถสร้างสีเดียวกันสำหรับพื้นหน้าและพื้นหลังได้หรือไม่
Chris S

ไม่มีการสร้างสีพื้นหลัง แต่คุณถูกต้องแล้วว่าสีที่สร้างขึ้นสามารถจับคู่กับพื้นหลังได้ ฉันยกเว้นสีขาว (37) และสีฟ้า (36) เพราะพวกเขาทำงานได้ไม่ดีกับพื้นหลังเทอร์มินัลที่ฉันใช้ ฉันได้แก้ไขคำตอบเพื่อให้ชัดเจน
Dan Midwood

3

คุณอยู่ในเส้นทางที่ถูกต้อง ผมเคยใช้วิธีการรายละเอียดบนหน้าคุณเชื่อมโยงไปและรายละเอียดว่าวิธีการในบล็อกของฉัน มันใช้งานได้สำหรับฉันที่ใช้ PuTTY จากกล่องหน้าต่างและยัง SSH จากเซิร์ฟเวอร์ CentOS หนึ่งไปยังเซิร์ฟเวอร์อื่น ถ้ามันไม่ทำงานสำหรับคุณและคุณแน่ใจว่าคุณได้ไวยากรณ์ถูกต้องมันอาจจะไปถึงลูกค้า SSH ของคุณ


สวัสดีฉันเปลี่ยน. bashrc แล้วและฉันเข้าใจว่าฉันสามารถเปลี่ยนสีในพื้นที่ได้ สิ่งที่ฉันต้องการก็คือเมื่อฉัน ssh ไปยังคอมพิวเตอร์เครื่องอื่นสีที่พรอมต์จะเปลี่ยนไป ฉันรู้ว่าเทอร์มินัลจะไม่ทราบโดยอัตโนมัติดังนั้นฉันจึงมองหาพอยน์เตอร์เพื่อให้มันเกิดขึ้น
bcrawl

1
แก้ไข: ตกลงใช่คุณพูดถูก หากไฟล์. bashrc เปลี่ยนไปในคอมพิวเตอร์แต่ละเครื่องเมื่อคุณ ssh ไฟล์จะแสดงสีที่กำหนดไว้ ฉันไม่ได้แก้ไขไฟล์ที่ถูกต้อง ขอบคุณ พิจารณาแล้วแก้ไข
bcrawl

2
หากคำตอบนี้นำคุณไปสู่โซลูชันโดยตรงให้ลองทำเครื่องหมายว่านี่เป็นคำตอบที่ยอมรับโดยคลิกที่ร่างของเครื่องหมายถูกทางด้านซ้ายของคำตอบ
Kevin M

1

ที่งานของฉันเรามีเซิร์ฟเวอร์ต่าง ๆ

การพัฒนาการเตรียมฉากการผลิต

ฉันใช้พรอมต์สีแดงเป็นแยงและสีเขียวสำหรับการแสดงละคร ตอนนี้ทุกเครื่อง staging มี stg ในโดเมน

ดังนั้นแยงจะเป็น

web1.domain.com
web2.domain.com

การจัดเตรียม / Dev จะเป็น

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

นี้จะใช้งานได้จริงสำหรับ redhat / centos

แต่สำหรับเซิร์ฟเวอร์ prod ฉันมีดังต่อไปนี้ค่ะ

/etc/sysconfig/bash-prompt-xterm

ข้างในคือ

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

นั่นจะเปลี่ยนเป็นพรอมแดง .. ตอนนี้คุณไม่สามารถแตะต้อง / etc / bashrc และเครื่องที่ไม่ใช่ prod อื่น ๆ ทั้งหมดจะยังคงสีพื้นหน้าปกติที่คุณใช้ .. แต่ฉันทำให้มันเป็นสีเขียว

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

ถ้าบล็อกควรอยู่ที่นั่น .. ฉันเพิ่งเปลี่ยนสีในส่วนอื่นเป็นสีเขียว .. 33 เป็นสีเขียว


0

คุณสามารถเปลี่ยน bash.rc ในแต่ละเครื่องเพื่อให้สีที่พรอมต์ต่างกัน หรือหากคุณมีสิทธิ์เพียงพอที่จะแก้ไขการตั้งค่า sshd เพื่ออนุญาตการถ่ายโอนสภาพแวดล้อมผู้ใช้ผ่านPermitUserEnvironmentคำสั่ง


0

เรากำลังทำงานกับการแก้ปัญหาการตรวจสอบสตริงชื่อโฮสต์ที่ครอบคลุมมากขึ้นในส่วนสำคัญนี้ ความเข้ากันได้ 256 สี นอกเหนือจากกรณีที่คุณสนใจกำหนดสีที่เฉพาะเจาะจงสำหรับแต่ละเซิร์ฟเวอร์ของคุณเองฉันรู้สึกว่านี่เป็นหนึ่งในนั้น "เป็นสิ่งที่เรามีคอมพิวเตอร์สำหรับ" ปัญหาดังนั้นเพื่อให้ได้สี "แบบสุ่ม" ตามที่คุณกำหนด checksums ควรเป็นวิธีที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.