
各 SSH セッションが直接その場所に移動するように、.profile に次のスクリプトを作成したいと思います。
- 指定されたホスト (user@host) を確認します。
- ホスト = host1 の場合 -- cd /var/www/site1
等
ヘルプ! :)
答え1
SSH はホスト名をサーバーに送信しない (IP アドレスの検索やキーの確認などにローカルで使用するだけ) ことはほぼ確実です。少なくとも、シェル スクリプトで使用できる方法ではありません。
出力を参照してくださいenv
- ssh コマンドで使用された名前に関係なく、唯一のホスト名は正規のホスト名です。
一部のSSHクライアントと一部のSSHサーバーでは、クライアントが1つ以上の環境変数の値を指定できるため、これを使用してサーバーにどのディレクトリに切り替えるかを指示することができます。たとえば、Puttyを参照してください。構成、接続、データまたはOpenSSH送信Envオプション。
それ以外の場合は、異なるドメイン名を持つ各 Web サイトごとに 1 つのユーザー ID を持つか、ユーザーにメニューを提供する必要があります。
答え2
質問が明確ではありません。複数のエイリアスを介して同じホストにアクセスしていますか? を共有する異なるホストにアクセスしていますか.profile
? ソース ホスト名またはターゲット ホスト名に基づいてコマンドを実行しようとしていますか?
異なるリモート ホストに異なる効果を持たせたい場合は、リモート ホスト名をテストするだけです。
case "$(hostname)" in
host1) cd /var/www/site1;;
esac
同じホストで異なる効果が必要な場合はSendEnv
、~/.ssh/config
環境変数を送信するには(オープンSSHクライアント)。これらを有効にするには、AcceptEnv
サーバー側ではディレクティブは不要ですが、多くの場合はそうではありません。ただし、LC_*
変数は通常は許可されるため、これらを使用して情報を渡すことができます。クライアント側では、 を実行しますLC_VIRTUAL_HOST=site1 ssh common-host.provider.com
。.profile
サーバーでは、 で次のように記述します。
case "$LC_VIRTUAL_HOST" in
host1) cd /var/www/site1;;
esac