Làm cách nào tôi có thể tự động thay đổi màu thiết bị đầu cuối khi tôi ssh một máy chủ?


14

Tôi thường xuyên đăng nhập vào các máy chủ khác nhau từ cửa sổ os x terminal của mình.

Tôi muốn chỉ định một bảng màu cho các máy chủ khác nhau để các cửa sổ đầu cuối của tôi dễ phân biệt hơn. Điều này có thể được thực hiện tự động?

Câu trả lời:


11

Đây là một giải pháp hoàn chỉnh. Giữ một danh sách các địa chỉ IP máy chủ và / hoặc tên miền của bạn và các màu bạn muốn cho chúng trong ~ / .server_colors:

192.168.122.102, Cát đỏ
192.168.122.103, Đại dương
www.foo.com, Cỏ
foo.com, Cỏ

Sau đó thêm dòng này vào ~ / .profile để chiếm quyền điều khiển ssh:

bí danh ssh = "~ / bin / safe_ssh $ 1"

Sau đó so sánh bất cứ điều gì sau @ trong mục tiêu ssh của bạn với danh sách của bạn. Nếu có sự trùng khớp, hãy chạy AppleScript để thay đổi màn hình thành màu tương ứng. Đây là ~ / bin / safe_ssh:

#! / bin / bash
ip = `tiếng vang $ 1 | cắt -d "@" -f2`
trận đấu = `mèo ~ / .server_colors | grep $ ip | wc -l`
nếu [$ khớp -gt 0]
sau đó
    màu = `mèo ~ / .server_colors | grep $ ip | cắt -f2 -d "," `
    osascript ~ / bin / change_terminal_color.scpt "$ color" 2> / dev / null
fi
/ usr / bin / ssh $ 1

Và cuối cùng, đây là ~ / bin / change_terminal_color.scpt

chạy argv
    báo cho ứng dụng "Terminal" để đặt cài đặt hiện tại của tab đã chọn của cửa sổ 1 thành (cài đặt đầu tiên được đặt tên là (mục 1 của argv))
Kết thúc

Tôi đã lấy hầu hết các mã này từ bài viết trên blog này .


1
Rất đẹp. Trong tập lệnh safe_ssh, $ 1 phải là $ @ để cho phép các tham số bổ sung cho SSH được truyền qua. Có lẽ cũng là một cuộc gọi sau ssh để trả thiết bị đầu cuối trở lại mặc định. Một chỉnh sửa cuối cùng sẽ làm cho điều này khá hoàn hảo: hỗ trợ cho các lệnh SSH không chứa '@'.
nOw2


2

Giải pháp của @muirbot hoạt động thực sự tốt cho tôi. Tôi đã thực hiện một số cải tiến nhỏ cho điều đó. Tôi sẽ thêm nó bên dưới bài viết của anh ấy một khi tôi có đủ danh tiếng.

Thay thế dòng

ip =echo $1 | cut -d"@" -f2
với
ip =echo $@ | grep -Eio [[:alnum:]_.-]+@[[:alnum:]_.-]+ | cut -d@ -f2

Thay đổi này cho phép đưa ra các đối số bổ sung cho lệnh ssh của bạn như "ssh -p 1111 userName @ host"

Biểu thức chính quy cho phép các địa chỉ ipv4 và tên miền đơn giản.

Để hỗ trợ thêm nhiều đối số thay đổi dòng cuối cùng thành

/ usr / bin / ssh $ @


0

Tôi chỉ tìm kiếm điều tương tự và tìm thấy bài viết này:

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

Nó sử dụng một tập lệnh php để thay đổi màu thiết bị đầu cuối bằng applescript. Bạn có thể thiết lập ánh xạ các màu khác nhau cho mỗi máy chủ. Hoạt động rất tốt cho tôi, mặc dù cảm thấy thôi thúc viết lại các công cụ php thành ruby ​​:)

fk


0

Tôi sử dụng tập lệnh khởi chạy SSH trong các cửa sổ xterm với các màu bg / fg khác nhau. Nó chọn các màu dựa trên hàm băm của tên máy chủ từ một dải màu sao cho không cần cấu hình.

Kịch bản được viết bằng Ruby: https://github.com/mickeyil/ssx


0

Nếu bạn đang sử dụng iTerm2, hãy tạo một tệp có tên ~/bin/ssh-host-color.shvới nội dung từ 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 $@

Và thêm dòng sau vào ~/.aliases.shtập tin của bạn :

alias ssh="~/bin/ssh-host-color.sh $@"
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.