작업중인 서버를 식별하십시오.


9

터미널에서 SSH를 사용할 때 사용중인 서버를 식별하는 방법은 무엇입니까?

매일 30 대의 서버로 ssh하고 끊임없이 전환해야합니다.
현재 탭 이름을 편집하고 IP iddress를 작성하여 서로 이동합니다.

이를 수행하는 자동화 된 방법이 있습니까 (서버 IP 주소를 탭 이름으로 지정)? 각 서버에서 파일을 편집하지 않는 다른 대안이 있습니까?


1
서버를 식별하기 위해 무엇을 알아야합니까? 서버 이름을 보려면 간단히 "hostname"을 입력하십시오. 우리가 좋은 명명 규칙을 사용했기 때문에 알기에 충분합니다
Private

현재 내가 user@hostname연결하는 첫 번째 호스트에 있습니다. IP 주소를보고 싶습니다. 또한에서 server1로 이동 server2하면 탭의 이름이 변경되지 않습니다.
RASG

네, 그건 당신의 이름이지만, 나는 servername을 의미합니다. 해당 머신의 호스트 이름이 있어야합니다. 정보가 충분하지 않습니까?
Private

1
터미널의 배경색을 설정하는 것은 어떻습니까? 연결 방법 및 사용중인 터미널에 따라 자동화 할 수 있습니다. 예를 들어 프로덕션 서버에 진한 빨간색 배경을 설정할 수 있으므로 특히 모양과 느낌이 같은 준비 서버에 동시에 연결할 때 특히주의해야합니다.
Panda Pajama

1
30 대의 서버를 지속적으로 전환하는 경우 관리 용 퍼펫과 같은 스크립팅 및 도구를 살펴 봐야합니다. 또한 IP가 호스트 이름보다 더 잘 인식되는 경우 좋은 호스트 이름처럼 들리지 않습니다!
JamesRyan

답변:


11

나는 보통 호스트 이름을 사용한다 $PS1. 그러나 문제가 발생하면 GNU를 사용하여 시작할 수 screen있으며 다음과 같이 함수를 정의 할 수 있습니다.

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 "$@"
}

설명:

  1. 로컬 셸에서 제목을 설정하더라도 원격 셸 설정으로 제목을 덮어 쓸 수 있습니다. screen원격 쉘이 직접이 작업을 수행하지 못하도록하고,이를 가능하게하려면 사용자 정의해야하므로 제목을 로컬로 설정하고 고정하기가 더 쉽습니다.
  2. 조회 호스트 이름에서 IP를 고려하면서, 마지막 매개 변수 호스트 이름으로, 그리고 제목으로 설정합니다. 나는 약간의해야 할 일을했을 재판 오류를 나는 바로 도착하기 전에 echo문자열입니다. 당신도 그것을해야 할 수도 있습니다.
  3. 마지막으로 명령을 사용 screen하여 세션을 시작하십시오 ssh. 명령이 종료되면 세션이 종료됩니다.

이를 다양한 방법으로 사용자 정의 할 수 있습니다. 예를 들어, 호스트 이름과 IP를 파일에 저장하고 파일에서 읽거나 ( ssh_config사용자 이름과 같은 제목에 대한 다른 항목을 저장할 수 있음) 읽을 수 있습니다 .

이제 ssh-title some.host연결에 사용하십시오. 서버 측을 편집하지 않고도이 작업을 수행 할 수있는 유일한 방법이라고 생각합니다.


5

서버를 식별하는 몇 가지 방법 :

  • SSH 지문 -안전하지만 재배치 할 때마다 변경됩니다.
  • 쉘 프롬프트 ( PS1) 및 터미널 제목 -안전하지 않지만 (누구든지 복제 할 수 있음) 간단하고 실용적입니다.
  • ip address -SSH 지문으로 안전하고 쉽게 읽을 수 있습니다.
  • hostname -안전하지 않지만 매우 읽기 쉽습니다.

감사. 어떻게 터미널 탭 제목으로 자동 추가 하시겠습니까?
RASG

2

또 다른 옵션은 liquidprompt 를 사용하는 것입니다. --- bash및 모두에 대해 작동 zsh하며 터미널 제목을 설정하고 프롬프트에서 호스트 이름을 다른 색상으로 표시하도록 쉽게 구성 할 수 있습니다.

여기에 이미지 설명을 입력하십시오


2

이 솔루션은 약간의 해킹이지만, 내가 원하는 것을 할 것이라고 생각합니다. 이 작업을 수행하려면 설치 xdotoolwmctrl설치 해야 합니다.

~/.bashrc터미널은 기본적으로 모든 줄마다 제목을 재설정하여 명령 줄 제목 세트를 쓸모 없게하기 때문에 먼저 파일 을 편집해야 합니다.

직후: xterm*|rxvt*)

바꾸다: PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"

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

다음으로 우리는 ssh당신이 원하는대로 커스텀 스크립트 를 만들 것 tab-ssh입니다. 그러나이 답변을 위해 mine이라고 부를 것 입니다. 텍스트 편집기를 열고 다음을 다음과 같이 저장하십시오 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

그런 다음 실행 가능하게 만드십시오.

chmod +x tab-ssh

지금, 당신은 사용하고있는 가정 bash하고 gnome-terminal, 새 탭을 열 이름을 변경하고 시작해야 스크립트를 실행, ssh세션. 예를 들어 :

tab-ssh username@0.0.0.0

새 탭을 열고 이름을 바꿉니다 0.0.0.0(예 : "@"기호 다음에 나오는 모든 것) username@0.0.0.0.

다음을 사용하여 만들었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.