GNU/Linux >> Linux の 問題 >  >> Linux

シェルがSshから制御されているかどうかを検出する方法は?

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

(セッションの起動ではなく、シェル構成でこれをテストするのはなぜですか?)


Linux
  1. Linux でデフォルトのシェルを変更する方法

  2. シェルから現在の CPU 使用率を確認するにはどうすればよいですか?

  3. Linux でプログラムの起動を検出する方法は?

  1. adb:adb シェルから PID を見つける

  2. シェルから Vim コマンドを実行するには?

  3. stdin がシェルから /dev/null かどうかを確認する方法は?

  1. LinuxでターミナルからWebを検索する方法

  2. Utf-8ファイルからBOMを削除する方法は?

  3. SSH - ~/.ssh/config ファイルに -t コマンドを含める方法