ユーザーが物理的にコンピューターを使用している場合に 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_CONNECTION
、SSH_CLIENT
はSSH_TTY
SSH 経由でログインした場合にのみ定義されます。
答え3
/var/run/utmpx (「man utmpx」を参照) にこの情報があると思います。「who」を実行すると、who コマンドでリモート ノードから接続しているかどうか (さらに、どこから接続したか) がわかることがわかります。
したがって、常に who コマンドを使用して出力を調整し、これを判断することができます。
注: 上記の回答 (SSH_CONNECTION の使用について) の方がより良い解決策だと思います。