web-dev-qa-db-ja.com

インタラクティブSSHを使用してリモートホストでコマンドを実行する(条件付き)

リモートホストにログインするたびに、現在のインタラクティブなSSHセッション内でコマンドを自動的に実行できるようにしたいと思います。

何かのようなもの

ssh user@remotehost [run do.sh]

ここで、do.shはいくつかのハウスキーピングタスクを実行してから、screenセッションに再接続します(現在、ホストにログインした後、do.shを手動で実行しています)。

他のマシンからこのホストにログインし、そこからログインするときに.bashrcを実行したくないので、do.shに追加したくないので、オプションにする必要があります。

9
Jim Farkas

あなたはこのようなことを試すことができます:

ssh server -t "do.sh; bash --login"

ここで提案されているとおり: https://serverfault.com/questions/167416/change-directory-automatically-on-ssh-login

または、公式のmanページで説明されているように、sshd_conf(または〜/ .ssh/config)で「LocalCommand」オプションを使用してみてください。 http://unixhelp.ed.ac.uk/CGI/man-cgi ?ssh + 1

15
Patkos Csaba

パズルの一部:OpenSSHを想定して、sshクライアントは次の環境変数を設定します。

SSH_CONNECTION接続のクライアント側とサーバー側を識別します。変数には、スペースで区切られた4つの値が含まれます。クライアントIPアドレス、クライアントポート番号、サーバーIPアドレス、サーバーポート番号。

したがって、この情報を使用して、接続元を見つけることができます。

3
sr_