共有SSHセッション検出

共有SSHセッション検出

私の仕事では、SSHを介してさまざまなコンピュータに接続する必要があります。生活をより便利にするために、私がどのマシンを使用しているかを一目でわかるように、各マシンのカラースキームを自動的に設定しようとしました。

これはほぼ布材。

~/.ssh/config:

Host some-remote-server
    Hostname some-remote-server.ac.uk
    User myusername
    IdentityFile ~/.ssh/id_rsa
    ForwardAgent yes
    ForwardX11 yes

Host some-other-remote-server
    Hostname some-other-remote-server.ac.uk
    User myusername
    IdentityFile ~/.ssh/id_rsa
    ForwardAgent yes
    ForwardX11 yes
    ProxyCommand ssh -Y some-remote-server -W %h:%p
    ControlMaster auto
    ControlPath /tmp/ssh-socket-%r@%h-%p
    ControlPersist 600

「some-remote-server」と「some-other-remote-server」の両方を青色に設定し、「my-local-server」を赤色に設定したいとします。

ログインに問題はありません。 "~/.profile"に色スキームを適切に設定するコードがあります。ところがログアウトが問題ですね。

~/.bash_logout:

if [[ $- == *i* ]]; then
  ORIGIN_HOST=`who am i | awk -F"[()]" '{print $2}'`
  $HOME/bin/set_the_colorscheme $ORIGIN_HOST
fi

my-local-serverからsome-other-remote-serverへのsshセッションを終了すると、上記のスクリプトは$ ORIGIN_HOSTを「some-remote-server」(b / My SSH構成ファイルcのControlMaster設定)として識別します。色は青のままです。

ControlMasterを使用していることを検出し、元のsshコマンドを実行したホストを見つける方法はありますか?

ありがとうございます。

ベストアンサー1

実際の目標は、SSHセッションを終了した後に端末設定を復元することです。これは以前のソリューションとは少し異なるソリューションです。他の投稿に基づくソリューションは次のとおりです。

SSHセッションが終了した後にいくつかのコードを実行するようにラッパー/シム関数を定義できます。

function ssh () { command ssh "$@"; echo "SSH session terminated!"; }

このラッパーを使用すると、現在のホストに基づいて端末環境をリセットできます。具体的には、次のことができます。

$ mkdir -p ~/.ssh/exit_scripts

$ cat <<HEREDOC > "${HOME}/.ssh/exit_scripts/${HOSTNAME}"
# Host-specific script goes here
echo "I'm on $(hostname)"
HEREDOC

$ function ssh () { command ssh "$@"; source "${HOME}/.ssh/exit_scripts/${HOSTNAME}"; }

おすすめ記事