ユーザーがシェル スクリプトから SSH でログインしていることを知っていますか?

ユーザーがシェル スクリプトから SSH でログインしていることを知っていますか?

ユーザーが物理的にコンピューターを使用している場合に 1 つの処理を実行し、ユーザーが SSH 経由でログインしている場合に 1 つの処理を実行するシェル スクリプトがあります。

どうすればそれを実行できるでしょうか?

もっと具体的に言うと、私の通常のマシンは OS X で、そこで OS X のグラフィカル エディター (BBEdit) をエディターとして使用したいと考えています。ただし、ネットブックから Mac に SSH 接続する場合は vim を使用したいと考えています。Mac へのグラフィカル接続がないためです。

ありがとう!

答え1

SSH_CONNECTION、SSH_TTY、または DISPLAY 環境変数を使用できるはずです。

見る:http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/ssh.1.html

 SSH_CONNECTION        Identifies the client and server ends of the connection.  The variable contains
                       four space-separated values: client IP address, client port number, server IP
                       address, and server port number.

編集: SSH_CLIENT もオプションですが、マニュアル ページには表示されません。

答え2

envローカルと SSH 経由でログインしたときとを比較します。

たとえばSSH_CONNECTIONSSH_CLIENTSSH_TTYSSH 経由でログインした場合にのみ定義されます。

答え3

/var/run/utmpx (「man utmpx」を参照) にこの情報があると思います。「who」を実行すると、who コマンドでリモート ノードから接続しているかどうか (さらに、どこから接続したか) がわかることがわかります。

したがって、常に who コマンドを使用して出力を調整し、これを判断することができます。

注: 上記の回答 (SSH_CONNECTION の使用について) の方がより良い解決策だと思います。

関連情報