私が働いているサーバーを特定する


9

ターミナルからsshを使用しているときにどのサーバーにいるかを識別する方法は?

私は毎日30台のサーバーにsshで接続し、常にそれらを切り替えなければなりません。
現在、私はタブ名を編集していて、IP iddressを書いて次々にジャンプしています。

これを行う自動化された方法(サーバーのIPアドレスをタブ名として割り当てる)はありますか?各サーバー上のファイルの編集を含まない他の代替手段はありますか?


1
サーバーを識別するために何を知る必要がありますか?サーバー名を表示するには、単に「ホスト名」と入力します。我々は良いの命名規則を使用するために使用するので、私が知っているためにそれは十分だ
プライベート

現在、私はuser@hostname最初のホストに接続しています。IPアドレスを確認したい。また、からserver1にジャンプしてserver2も、タブの名前は変更されません。
RASG、2014

はい、それはあなたの名前ですが、私はサーバー名を意味します。そのマシンのホスト名が必要です。あなたにとって十分な情報ではありませんか?
プライベート

1
端末の背景色を設定してみませんか?接続方法と使用している端末によっては、自動化できる場合があります。たとえば、運用サーバーの背景を濃い赤に設定する場合があるので、特にまったく同じに見える同じステージングサーバーに同時に接続する場合は特に注意が必要です。
パンダパジャマ2014

1
常に30台のサーバーを切り替える場合は、管理用のスクリプトやパペットなどのツールを確認する必要があります。また、IPがホスト名よりも認識しやすい場合、これらは適切なホスト名のようには聞こえません。
JamesRyan 2014

回答:


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、2014

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、好きな名前のカスタムスクリプトを作成しますが、この回答ではmineと呼びますtab-ssh。テキストエディターを開き、次のように保存します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.