特定のディレクトリにSSH接続できますか?


9

私は毎日、さまざまなサーバーにSSH接続しており、それらのWebサイトのいくつかは、異なるファイルシステム構造を持っています。サーバーを変更するたびに、本当に必要なファイルに到達する場所を見つける必要があります(になりたいことがほとんどないため~)。

私はすべてのアクションを自動化するためにファブリックファイルを使用しています(Gitへのプッシュ、Gitからプルするためのサーバーへの自動SSH、Webアプリケーションの再起動、依存関係の変更など)。適切なディレクトリにSSHで接続してfab ssh、通常のSSHセッションを実行し、適切な場所ですぐに作業を開始できるようにします。

ただし、これはファブリックに関するものではありません。無視してください。ファブリックはコマンドのバッチを実行しているだけです。私の議論はsshコマンドです。それが、Fabricに実行するように指示することです。

だから、どのように私は得ることができますsshへのcdログイン時に特定のディレクトリに?

注:これサーバー全体またはユーザー全体を対象にすることはできません。一部のサーバーでは、1人のユーザーの下に複数のWebサイトがあるため、何かを挿入しても~/.bashrcうまくいきません。

回答:


9

ログイン時に何かを実行できることはわかっていましたが、実行するとすぐに終了することはわかっていました。今覚えているのは、リモートサーバーで好きなだけ実行できることです。コマンドを一緒にチェーンするだけです!

ssh user@server -t "cd /websites/website ; /bin/bash"

今、私はそれをするように生地に言うことができ、私たちは離れています。シンプル。


私はファブリックとは何の関係もないと言いましたが、上記に基づいた、ファブリックスクリプトの新しい部分もここにあります。

def ssh():
    ''' SSH into the remote server at the correct directory '''
    local('ssh -t -p%(port)s %(server)s "cd %(remote_dir)s ; /bin/bash"' % {
        'server': server_host,
        'port': server_port,
        'remote_dir': remote_dir,
    })

変数(server_hostserver_portおよびremote_dir)がサイト間で変化するように、同じスクリプトをシンボリックリンクしています。

ファブリックはアウトバウンド接続を処理できるため、これを行うこともできます。

def ssh():
    ''' SSH into the remote server at the correct directory '''
    run('cd %s ; /bin/bash' % remote_dir)

これは機能しますが、出力にはファブリックからの文字列が付加されます。これにより、プロンプトが80文字以上になり、解決策はたくさんありますが、私にはそれが多すぎます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.