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


9

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

何かのようなもの

ssh user@remotehost [run do.sh]

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

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


1
なぜ単に実行しないのssh user@remotehost /path/to/do.shですか?機能する場合は、.ssh / configまたは個人の.bashrcでエイリアスを作成することもできます
Coren

それで、どこかからリモートホストにログインするときは "do.sh"を実行したいが、他の場所からリモートホストにログインするときは実行したくないですか?あなたはどちらのホスト接続するのですから、「do.sh」をトリガし、そしてどの他はいけないでしょうか?
マット

はい、時々実行したいと思いますが、常にではありません。これは、Macのランチャーからのキーボードショートカットがあり、たいていの場合に必要なものを提供できるためです。ショートカットを押してボックスにsshしてからスクリーンセッションに再接続したいのですが、「ssh user @ host」のような通常の端末を使用している場合は、そうしたくありません。Patkosが以下に説明する解決策は、まさに私が必要としていることを行います。
ジムファルカス

回答:


15

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

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


1
本当にありがとう!!sshサーバー-t "/home/user/do.sh; bash --login"がうまくいきました。köszönömszépen!
ジムファルカス

1
シベセン(どういたしまして)
Patkos Csaba

@PatkosCsaba英語以外の言語はここで避けてください。これはコメントにも適用されます。
LinuxSecurityFreak 2016年

3

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

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

したがって、この情報を使用して、接続がどこから来ているのを知ることができます

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