Thay đổi màu Terminal khi ssh-ing vào máy từ xa và quay lại


8

Tìm cách tự động thay đổi màu thiết bị đầu cuối khi ssh-ing vào máy từ xa và trở lại màu mặc định khi thoát khỏi phiên ssh. Đơn giản, muốn có một màu khác khi tôi đang làm việc trên máy từ xa.

Bất kỳ ý tưởng?

ps: không muốn sử dụng iTerm2, nhưng Terminal.app tiêu chuẩn

Câu trả lời:


9

Tôi đang sử dụng như sau.

Có một lệnh shell, được gọi myssh, với nội dung:

PROFILE="$1";shift;
DEF="Basic" #the default profile name
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${PROFILE}\""|osascript
ssh $@
echo "tell app \"Terminal\" to set current settings of first window to settings set \"${DEF}\""|osascript

và sử dụng bí danh bash cho kết nối, như:

alias ssweb='myssh Homebrew user@web.example.com'
alias ssmail='myssh Ocean me@mail.example.com'

Khi tôi muốn ssh vào máy chủ web, tôi chỉ cần viết sswebvào Terminal và tôi đã nhận được hồ sơ "Homebrew". Khi phiên ssh kết thúc, AppleScript sẽ trở về "Cơ bản".

Các bí danh sẽ đi vào tệp bash-startup $ HOME / .profile hoặc tương tự của bạn.

"Homebrew", "Ocean", v.v. là các cấu hình cài đặt từ tùy chọn Terminal.app. Bạn cũng có thể thiết lập các phông chữ, mã hóa khác nhau, v.v.

Tất nhiên, bạn có thể sử dụng nó trực tiếp (không có bí danh) như:

myssh Pro user@another.machine.example.com
       ^        ^
       |        ssh command arguments
       terminal profile name

Làm thế nào bạn sẽ làm điều này cho iterm2? cảm ơn!
Cosu

Tôi đã ngừng sử dụng iTerm khi trong "vim" sau khi chọn một số văn bản, nó bị cắt bỏ lựa chọn thay vì sao chép ..; (Vì vậy, thật không may, tôi không có ý tưởng nào về giải pháp iTerm2.
jm666

Cảm ơn bạn! Tôi đã xem xét nhiều cách khác nhau để làm điều này trong một thời gian, nhưng phương pháp của bạn rất đơn giản và linh hoạt. Điểm thưởng cho việc phát triển một khung nhỏ có thể lấy các cấu hình và lệnh từ các bí danh khác nhau, thay vì ném xung quanh một loạt các tập lệnh riêng lẻ với các bộ ưu tiên được mã hóa cứng.
octern 26/03 '

2

Tôi biết đã có một vài câu trả lời, nhưng đây là một cách thay thế:

Không có cách chung để thay đổi màu nền, nhưng chúng ta có thể sử dụng một cách tiêu chuẩn để thay đổi tiêu đề cửa sổ. Nếu bạn đang đăng nhập vào nhiều thiết bị không phải là "máy chủ Unix" (như thiết bị mạng, bộ định tuyến, bộ chuyển mạch, tường lửa, v.v.) thì bạn phải sử dụng trình bao của chúng và không thể cài đặt các biến vỏ của riêng bạn. Vì vậy, đây là một cách khác:

function ssh() {
  H=$(echo $@ | sed -e 's/.*@//g;s/ .*//g')
  echo $@ | grep '@' && U=$(echo $@ | sed -e 's/@.*//g;s/.* //g')
  echo -ne "\033]0;${U:=$(whoami)}@${H%%.*}\007"
  unset H
  unset U
  /usr/bin/ssh $@
}

Thêm phần này vào bạn .bashrc.

Về cơ bản, vì các hàm và bí danh được ưu tiên tìm trong đường dẫn, nên lệnh này sẽ sử dụng lệnh ssh và sử dụng văn bản trước và sau "@" để đặt các biến HOST và USER mà sau đó nó sử dụng để lặp lại mã ASCII được nhận dạng bởi thiết bị đầu cuối và được sử dụng để thiết lập tiêu đề.

Bạn phải sử dụng "ssh user@host.blah" cho việc này chứ không phải "ssh -l user host.blah"

Nếu bạn không cung cấp tên người dùng, nó sẽ đặt tên đó là tên người dùng hiện tại của bạn (rõ ràng nếu bạn đang sử dụng .ssh / config tùy chỉnh (mà tôi sử dụng nhiều) thì điều này sẽ không chính xác, nhưng tôi nghĩ nó đủ tốt trở nên hữu ích

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.