ฉันจะเปลี่ยนสีเทอร์มินัลโดยอัตโนมัติได้อย่างไรเมื่อฉันเซิร์ฟเวอร์


14

ฉันมักจะเข้าสู่เซิร์ฟเวอร์ที่แตกต่างจากหน้าต่าง terminal x ของฉัน

ฉันต้องการกำหนดแบบแผนชุดสีสำหรับโฮสต์ที่แตกต่างกันเพื่อให้หน้าต่างเทอร์มินัลของฉันแยกแยะได้ง่ายขึ้น สิ่งนี้สามารถทำได้โดยอัตโนมัติ?

คำตอบ:


11

นี่คือทางออกที่สมบูรณ์ เก็บรายการที่อยู่ IP ของเซิร์ฟเวอร์ของคุณและ / หรือโดเมนและสีที่คุณต้องการใช้ใน ~ / .server_colors:

192.168.122.102, Red Sands
192.168.122.103, โอเชียน
www.foo.com หญ้า
foo.com หญ้า

จากนั้นเพิ่มบรรทัดนี้ใน ~ / .profile เพื่อจี้คำสั่ง ssh:

alias ssh = "~ / bin / safe_ssh $ 1"

จากนั้นเปรียบเทียบสิ่งที่อยู่หลัง @ ในเป้าหมายของคุณกับรายการของคุณ หากมีการจับคู่ให้เรียกใช้ AppleScript เพื่อเปลี่ยนหน้าจอเป็นสีที่สอดคล้องกัน นี่คือ ~ / bin / safe_ssh:

#! / bin / ทุบตี
ip = `echo $ 1 | ตัด -d "@" -f2`
match = `cat ~ / .server_colors | grep $ ip | ห้องสุขา -l`
ถ้า [$ match -gt 0]
แล้วก็
    color = `cat ~ / .server_colors | grep $ ip | ตัด -f2 -d "," `
    osascript ~ / bin / change_terminal_color.scpt "$ color" 2> / dev / null
Fi
/ usr / bin / ssh $ 1

และสุดท้ายนี่คือ ~ / bin / change_terminal_color.scpt

ในการทำงาน argv
    บอกแอพพลิเคชั่น "Terminal" เพื่อตั้งค่าปัจจุบันของแท็บที่เลือกของหน้าต่าง 1 ถึง (ตั้งค่าแรกที่ชื่อ (รายการ 1 ของ argv))
สิ้นสุดวิ่ง

ฉันใช้รหัสนี้ส่วนใหญ่จากโพสต์บล็อกนี้


1
ดีมาก. ในสคริปต์ safe_ssh $ 1 ควรเป็น $ @ เพื่ออนุญาตให้พารามิเตอร์พิเศษไปยัง SSH ที่จะผ่าน บางทีการเรียกหลังจาก ssh เพื่อส่งคืนเทอร์มินัลกลับเป็นค่าเริ่มต้น การแก้ไขครั้งสุดท้ายจะทำให้สมบูรณ์แบบมาก: การสนับสนุนคำสั่ง SSH ที่ไม่มี '@'
nOw2

2

ใช่.

คุณใช้เช่น "หน้าจอ" และปรับแต่ง: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html

หรือคุณจัดการให้ลูกค้า SSH ของคุณถ้าเป็นไปได้

คุณสามารถลองสิ่งนี้: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/


2

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

แทนที่บรรทัด

IP =echo $1 | cut -d"@" -f2
กับ
IP =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

การเปลี่ยนแปลงนี้อนุญาตให้กำหนดอาร์กิวเมนต์เพิ่มเติมให้กับคำสั่ง ssh ของคุณเช่น "ssh -p 1111 userName @ host"

การแสดงออกปกติช่วยให้ที่อยู่ ipv4 ง่ายและชื่อโดเมน

หากต้องการสนับสนุนการขัดแย้งหลาย ๆ ครั้งให้เปลี่ยนบรรทัดสุดท้ายเป็น

/ usr / bin / ssh $ @


0

ฉันแค่มองหาสิ่งเดียวกันและพบบทความนี้:

http://akrabat.com/php/osx-terminal-colours/

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

FK


0

ฉันใช้สคริปต์ที่เปิดตัว SSH ใน windows xterm ด้วยสี bg / fg ที่แตกต่างกัน มันเลือกสีตามแฮชของชื่อโฮสต์จากช่วงสีเพื่อไม่จำเป็นต้องกำหนดค่า

สคริปต์เขียนด้วย Ruby: https://github.com/mickeyil/ssx


0

หากคุณใช้ iTerm2 ให้สร้างไฟล์ที่~/bin/ssh-host-color.shมีชื่อเนื้อหาจากhttps://gist.github.com/jbochi/31f118b8ae2882a2c90fa46c46509b57 :

set_term_bgcolor(){
  local R=$1
  local G=$2
  local B=$3
  /usr/bin/osascript <<EOF
tell application "iTerm"
  tell the current window
    tell the current session
      set background color to {$(($R*65535/255)), $(($G*65535/255)), $(($B*65535/255))}
    end tell
  end tell
end tell
EOF
}

if [[ "$@" =~ "production.example.com" ]]; then
  set_term_bgcolor 40 0 0
elif [[ "$@" =~ "qa.example.com" ]]; then
  set_term_bgcolor 0 40 0
fi

trap "set_term_bgcolor 0 0 0" EXIT

ssh $@

และเพิ่มบรรทัดต่อไปนี้ใน~/.aliases.shไฟล์ของคุณ:

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