Tôi có thể thay đổi nền thiết bị đầu cuối dựa trên tên máy chủ không?


17

Tôi muốn có sự thay đổi màu nền thiết bị đầu cuối của tôi dựa trên tên máy chủ. Lý do của tôi cho việc này chủ yếu là có và có thêm cách để tự nhắc nhở tôi đang sử dụng máy chủ nào, vì vậy tôi không làm điều gì đó ngu ngốc.

Có cách nào đó tôi có thể sử dụng nền cà tím tiêu chuẩn nếu tôi ở trên máy cục bộ của mình, sau đó đổi màu đỏ nếu tôi ssh vào máy chủ web sản xuất hoặc các máy chủ khác mà tôi có thể chỉ định không?


Một ý tưởng, kịch bản thay đổi thành biến môi trường xử lý các cài đặt đầu cuối. Tạo tập lệnh cho từng nơi bạn thường ssh đến và bao gồm thay đổi cài đặt trong tập lệnh đó, đây là hướng dẫn có thể giúp: cyberciti.biz/faq/iêu - theo cách này bạn chỉ có thể chạy tập lệnh không chỉ kết nối cho bạn, nhưng sẽ tùy chỉnh thiết bị đầu cuối cho phiên cụ thể đó.
MaQleod

1
Có một câu hỏi tương tự trên trang web ubfox : Askubfox.com/questions/13705/ trên Mind Mind, tôi không đổ lỗi cho bạn, tôi cũng không tìm thấy nó lúc đầu :)
Stefano

Câu trả lời:


9

Bạn có thể sử dụng tùy chọn localcommand của ssh / config để chạy lệnh bất cứ khi nào sử dụng bí danh. tôi sử dụng

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

Điều này phụ thuộc vào xtermcontrol và thuật ngữ của bạn là xterm. Có lẽ có các ứng dụng khác cho các điều khoản khác.

Vấn đề duy nhất với phương pháp này là nó xảy ra khi bạn gọi ssh. Không có gì để hoàn tác thay đổi màu sắc. Tôi đã thực hiện nó bằng cách gói một hàm xung quanh ssh, nhưng điều đó cũng có nhược điểm của nó.

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}

7

Dường như không có bất kỳ chức năng nào gnome-terminalđể thêm một tab mới vào một cửa sổ hiện có từ dòng lệnh. Nhưng có một vài lựa chọn để thực hiện những gì bạn muốn.

Hồ sơ lệnh

Tạo một gnome-terminalhồ sơ mới cho mỗi máy chủ bạn sẽ SSH vào. Nếu bạn chỉ có một vài máy chủ mà bạn thường xuyên kết nối, đây có thể là đơn giản nhất. Mỗi hồ sơ có thể có một tiêu đề khác nhau, màu nền trước, màu nền, lệnh tùy chỉnh và các cài đặt khác được xác định. Sau đó, bạn có thể sử dụng File -> Open Tabđể mở một tab mới với hồ sơ đã chọn.

Hồ sơ sử dụng lại

Tạo một gnome-terminalhồ sơ mới sẽ được sử dụng để mở một cửa sổ mới mỗi lần bạn muốn kết nối với một máy chủ SSH khác nhau (dựa trên câu trả lời AskUb Ubuntu này mà Stefano đã chỉ ra). Điều này sẽ hoạt động tốt nếu bạn kết nối với nhiều máy chủ khác nhau thường xuyên. Điều này sẽ không cho phép bạn phân biệt giữa các gnome-terminalcửa sổ khác nhau nơi bạn được kết nối với các máy chủ khác nhau chỉ trên các màu nền / màu nền trước, nhưng bạn sẽ có một tiêu đề khác nhau cho mỗi cửa sổ.

  1. Tạo một gnome-terminalhồ sơ mới ( File -> New Profile) dựa trên Defaulthồ sơ và gọi nó là "Remotehost" (lưu ý, không có khoảng trắng trong "Remotehost" để thực hiện các lệnh dễ dàng hơn).
  2. Trong Title and Commandtab, thay đổi:
    1. Initial title: đến "Máy chủ từ xa"
    2. When terminal commands set their own titles: đến Replace initial title
  3. Trong Colorstab, thay đổi:
    1. Bỏ chọn Use colors from system theme
    2. Build-in schemes: đến Custom
    3. Text color:Background color:màu sắc của sự lựa chọn của bạn. Hãy nhớ rằng một số lệnh (như ls) sử dụng màu cho đầu ra của chúng và bạn không muốn chọn màu sẽ gây khó khăn cho việc đọc đầu ra.
  4. Nhấn vào Closenút để lưu hồ sơ mới của bạn.
  5. Bây giờ bạn có thể mở một gnome-terminalcửa sổ mới cho mỗi máy chủ SSH từ xa bằng cách sử dụng lệnh gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost. Các -ttùy chọn thiết lập gnome-terminaltiêu đề cửa sổ và các -xtùy chọn thực hiện phần còn lại của dòng lệnh trong terminal. Bạn thậm chí có thể thực hiện aliasđể rút ngắn tổng số lần nhấn phím.

Dòng lệnh

Tôi đã tìm thấy mục blog này với tập lệnh sau sử dụng các lệnh xdotoolwmctrllệnh (chúng không được cài đặt theo mặc định trên Ubuntu, vì vậy bạn có thể cần cài đặt chúng trước) để sử dụng phím tắt gnome-terminal Ctrl+ Shift+ tđể mở tab mới trong gnome-terminalcửa sổ hiện tại . Nó có thể được sửa đổi để mở một tab mới với một cấu hình cụ thể và thực thi một số lệnh cho bạn.

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

Khác

Bạn có thể sáng tạo và thử một số thứ khác.

Câu trả lời SuperUser này về cơ bản sử dụng một chút nhào lộn "script-fu" để tạo một gnome-terminalhồ sơ tạm thời được sử dụng để mở một cửa sổ mới. Nó có thể được sửa đổi để sử dụng của bạn.

Bạn có thể có thể sử dụng Hỏi & Đáp về StackOverflow này và nhiều màn nhào lộn "script-fu" khác để tự động thay đổi gnome-terminaltiêu đề bất cứ khi nào bạn SSH sang máy chủ từ xa. Nó sẽ không nổi bật như thay đổi màu nền / tiền cảnh, nhưng nó sẽ tốt hơn một tiêu Terminalđề mọi lúc.


6

Điều này sẽ hoạt động trong Gnome, NẾU bạn sẵn sàng sử dụng cửa sổ gnome-terminal mới cho mỗi phiên ssh.

  1. Tạo một hồ sơ mới (với màu nền khác nhau) được gọi là "Từ xa"

  2. Chèn phần sau vào .bash_aliaseshoặc.bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

Bây giờ sshc remote-machinesẽ mở phiên gnome-terminal mới với cấu hình "Remote". điều này sẽ phân biệt giữa hồ sơ địa phương và từ xa.

Để chứa nhiều hồ sơ / máy chủ, hãy tạo nhiều hồ sơ và đặt một cái gì đó như thế này vào .bash_aliases:

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST=`echo $1 | cut -d'@' -f2`

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

Bây giờ sshc Productionsẽ mở cửa sổ phiên mới bằng cấu hình "Đỏ", sshc Testsẽ mở cửa sổ phiên mới bằng cấu hình "Xanh" và các máy chủ khác sẽ sử dụng Cấu hình "Mặc định".


2

Thu thập tất cả thông tin từ các trang web stack *** ở đây là giải pháp đơn giản nhất tôi đã tìm thấy cho mint mate + terminal terminal (giống như đối với gnome).

  1. Trong thiết bị đầu cuối mate xác định hồ sơ thứ hai, với nền tảng khác nhau.
  2. Kiểm tra xem các phím mặc định có hoạt động Alt + PageDown / Alt + PageUp sẽ thay đổi cấu hình và nền không.
  3. sudo apt get install xdotool

Bây giờ bạn có thể sửa đổi / etc / ssh / ssh_config, để nó có thể thay đổi cấu hình sau mỗi phiên ssh được thiết lập:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

Bây giờ, sau khi mỗi kết nối ssh được thiết lập trong thiết bị đầu cuối, cấu hình sẽ được thay đổi và bạn sẽ không bao giờ đưa cập nhật sql không mong muốn vào cơ sở dữ liệu sản xuất nữa :)

Tuy nhiên, không có giải pháp dễ dàng nào để quay lại cấu hình mặc định sau khi kết nối ssh bị đóng. Nhưng điều này có vẻ đủ cho tôi và tôi đã không đào thêm thông tin.

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.