私は毎日多数の異なるサーバーにSSHで接続し、それらのいくつかはWebサイトのファイルシステム構造が異なります。サーバーを変更するたびに、本当に必要なファイルにアクセスする場所を特定する必要があります(~
になりたいということはめったにないためです。 。
私はFabricファイルを使用してすべてのアクション(gitへのプッシュ、gitからプルするためのサーバーへの自動SSH、Webアプリケーションの再起動、依存関係の変更など)を自動化するので、必要なことも伝えられないのではないかと思いました。 fab ssh
を実行できるように、適切なディレクトリにSSHで接続します 通常のSSHセッションに参加し、適切な場所ですぐに作業を開始します。
ただし、これはファブリックに関するものではありません。無視してください。 Fabricはコマンドのバッチを実行しているだけです。私の議論はssh
です 指図。それがFabricに実行するように指示するものです。
では、どうすればssh
を入手できますか cd
へ ログイン時に特定のディレクトリに移動しますか?
注:これはできません サーバーまたはユーザー全体のものである。一部のサーバーで1人のユーザーの下に複数のWebサイトがあるため、~/.bashrc
に何かを貼り付けています 私にはうまくいきません。
承認された回答:
ログイン時に何かを実行できることはわかっていましたが、実行するとすぐに終了することはわかっていました。私が今覚えているのは、リモートサーバー上で好きなだけ実行できるということです。コマンドをつなげるだけです!
ssh [email protected] -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_host
、server_port
およびremote_dir
)サイトごとに変更します。
Fabricはアウトバウンド接続を処理できるため、次のことも実行できます。
def ssh():
''' SSH into the remote server at the correct directory '''
run('cd %s ; /bin/bash' % remote_dir)
これは機能しますが、出力の前にFabricからの文字列が追加されます。これにより、プロンプトの長さが80文字を超えました。解決策はたくさんありますが、それは私には多すぎます🙂
関連:KDEの「コメント」機能に相当するUnity?