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?
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:
Đâ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 .
Đúng.
Hoặc bạn sử dụng ví dụ: "màn hình" và tùy chỉnh nó: http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html
Hoặc bạn quản lý để làm điều đó trên SSH Client, nếu có thể.
Bạn cũng có thể thử điều này: http://www.cyberciti.biz/faq/bash-shell-change-the-color-of-my-shell-prompt-under-linux-or-unix/
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 $ @
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
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
Nếu bạn đang sử dụng iTerm2, hãy tạo một tệp có tên ~/bin/ssh-host-color.sh
vớ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.sh
tập tin của bạn :
alias ssh="~/bin/ssh-host-color.sh $@"