Xác định máy chủ tôi đang làm việc tại


9

Làm cách nào để xác định máy chủ nào bạn đang sử dụng khi sử dụng ssh từ thiết bị đầu cuối?

Tôi phải ssh vào 30 máy chủ hàng ngày và liên tục chuyển đổi giữa chúng.
Hiện tại tôi đang chỉnh sửa tên tab và viết iddress IP để chuyển từ cái này sang cái khác.

Có cách nào tự động để làm việc này không (gán địa chỉ IP của máy chủ làm tên tab)? Bất kỳ lựa chọn thay thế nào khác sẽ không liên quan đến việc chỉnh sửa một tệp trên mỗi máy chủ?


1
bạn cần biết những gì để xác định máy chủ của bạn? Tôi chỉ cần gõ "tên máy chủ" để xem tên máy chủ. Điều đó đủ cho tôi biết vì chúng tôi thường sử dụng một quy ước đặt tên tốt
Riêng tư

Hiện tại tôi có user@hostnamemáy chủ đầu tiên tôi kết nối. tôi muốn xem địa chỉ IP Ngoài ra, nếu tôi nhảy từ server1đến server2, tab không thay đổi tên.
RASG

vâng đó là tên của bạn, nhưng ý tôi là tên máy chủ. phải có tên máy chủ cho máy đó. không đủ thông tin cho bạn?
Riêng tư

1
Làm thế nào về việc thiết lập màu nền của thiết bị đầu cuối của bạn? Tùy thuộc vào cách bạn kết nối và thiết bị đầu cuối nào bạn đang sử dụng, bạn có thể tự động hóa nó. Ví dụ: tôi có thể đặt nền đỏ sẫm cho các máy chủ sản xuất để tôi biết rằng tôi phải hết sức cẩn thận, đặc biệt là khi kết nối đồng thời với các máy chủ dàn có giao diện giống hệt nhau.
Panda Pyjama

1
Nếu bạn đang chuyển đổi giữa 30 máy chủ liên tục thì bạn cần xem xét kịch bản và các công cụ như con rối để quản lý. Ngoài ra, nếu một IP dễ nhận biết hơn tên máy chủ, chúng không giống như tên máy chủ tốt!
JamesRyan

Câu trả lời:


11

Tôi thường sử dụng tên máy chủ, đặt qua $PS1. Tuy nhiên, nếu bạn gặp rắc rối, bạn có thể bắt đầu sử dụng GNU screenvà sau đó bạn có thể xác định một chức năng như vậy:

function ssh-title () {
    host="${@: -1}"  # You could customize it to make it identify the hostname better
    IP=$(host "$host" | awk '/has address/ { print $4 }')
    echo -ne '\033]0;'"$host"' - '"$IP"'\007'
    screen ssh "$@"
}

Giải trình:

  1. Ngay cả khi bạn đặt tiêu đề từ trình bao cục bộ, nó có thể bị ghi đè bởi cài đặt trình bao từ xa. screenkhông trực tiếp để shell từ xa làm điều này và bạn phải tùy chỉnh nó để cho phép nó làm điều đó, giúp bạn dễ dàng đặt tiêu đề cục bộ và bám sát nó.
  2. Tra cứu IP từ tên máy chủ , trong khi xem tham số cuối cùng là tên máy chủ và đặt nó làm tiêu đề. Tôi đã phải làm một chút thử nghiệm lỗi trước khi tôi có một echochuỗi đúng . Bạn có thể phải làm điều đó quá.
  3. Cuối cùng, sử dụng screenđể bắt đầu một phiên với sshlệnh. Phiên kết thúc khi lệnh thoát.

Bạn có thể tùy chỉnh điều này theo nhiều cách khác nhau. Ví dụ: bạn có thể lưu tên máy chủ và IP trong một tệp và đọc từ đó (giống như ssh_config) (và có thể lưu những thứ khác cho tiêu đề, như tên người dùng).

Bây giờ sử dụng ssh-title some.hostđể kết nối. Tôi nghĩ rằng đây là cách duy nhất bạn có thể làm điều này mà không cần chỉnh sửa bất cứ thứ gì phía máy chủ.


5

Một số cách để xác định máy chủ:

  • SSH vân tay - an toàn nhưng thay đổi bất cứ khi nào bạn triển khai lại.
  • Shell prompt ( PS1) và tiêu đề thiết bị đầu cuối - không an toàn (bất kỳ ai cũng có thể sao chép nó) nhưng đơn giản và thực tế.
  • ip address - bảo mật với dấu vân tay SSH và dễ đọc hơn.
  • hostname - không an toàn nhưng rất dễ đọc.

cảm ơn. và làm thế nào bạn sẽ tự động thêm nó như tiêu đề tab thiết bị đầu cuối của bạn?
RASG

2

Một tùy chọn khác là sử dụng liquidprompt --- hoạt động cho cả hai bashzsh, và có thể dễ dàng cấu hình để đặt tiêu đề thiết bị đầu cuối và thậm chí tô màu theo các màu khác nhau của tên máy chủ trong lời nhắc:

nhập mô tả hình ảnh ở đây


2

Giải pháp này có một chút hackish, nhưng tôi nghĩ nó sẽ làm những gì bạn đang tìm kiếm. Bạn sẽ cần xdotoolwmctrlcài đặt để làm việc này.

Trước tiên, bạn phải chỉnh sửa ~/.bashrctệp của mình vì theo mặc định, thiết bị đầu cuối đặt lại tiêu đề của nó sau mỗi dòng, hiển thị tiêu đề dòng lệnh vô dụng.

Ngay sau khi: xterm*|rxvt*)

Thay thế: PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

Với: PS1="${debian_chroot:+($debian_chroot)}\u@\h \w\a$ "

Tiếp theo, chúng tôi sẽ tạo một sshtập lệnh tùy chỉnh được gọi là bất cứ điều gì bạn muốn, nhưng với câu trả lời này, tôi sẽ gọi cho tôi tab-ssh. Mở trình soạn thảo văn bản và lưu như sau tab-ssh:

#!/usr/bin/env bash

WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID

sleep 1
title=$(echo "$*" | sed s/.*@//g)
xdotool type --delay 1 --clearmodifiers 'echo -en "\033]0;"'"${title}"'"\a"'
xdotool key Return

sleep 1
xdotool type --delay 1 --clearmodifiers "ssh $*"
xdotool key Return

Sau đó làm cho nó thực thi:

chmod +x tab-ssh

Bây giờ, giả sử bạn đang sử dụng bashgnome-terminal, chạy tập lệnh sẽ mở một tab mới, đổi tên nó và bắt đầu sshphiên. Ví dụ:

tab-ssh username@0.0.0.0

sẽ mở một tab mới, đổi tên nó thành 0.0.0.0(tức là mọi thứ theo dấu "@"), sau đó thực thi username@0.0.0.0.

Tạo bằng cách sử dụng như sau:

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.