SSH経由で制御されているかどうかをシェルスクリプト(より具体的には.zshrc)から検出したいと思います。 HOST変数を試しましたが、常にシェルを実行しているコンピューターの名前です。 SSHセッションの送信元のホスト名にアクセスできますか? 2つを比較すると、私の問題は解決します。
ログインするたびに、最終ログイン時刻とホストを示すメッセージが表示されます。
Last login: Fri Mar 18 23:07:28 CET 2011 from max on pts/1
Last login: Fri Mar 18 23:11:56 2011 from max
これは、サーバーがこの情報を持っていることを意味します。
承認された回答:
~/.profile
で使用する基準は次のとおりです :
- 変数の1つが
SSH_CLIENT
の場合 またはSSH_TTY
定義されている場合、それはsshセッションです。 - ログインシェルの親プロセス名が
sshd
の場合 、sshセッションです。
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
SESSION_TYPE=remote/ssh
# many other tests omitted
else
case $(ps -o comm= -p $PPID) in
sshd|*/sshd) SESSION_TYPE=remote/ssh;;
esac
fi
(セッションの起動ではなく、シェル構成でこれをテストするのはなぜですか?)