19

シェル スクリプトでsshコマンドを使用しようとすると、コマンドがそのまま残ります。シェルスクリプトでsshを使用する方法の例はありますか?

4

5 に答える 5

38

やりたいこと、使い方次第です。別のマシンでコマンドをリモートで安全に実行したいだけの場合は、次を使用してください

ssh user@host command

例えば

ssh user@host ls

これを安全に行うには、実行時にユーザーにパスワードを要求するか、リモート ホストでキーを設定する必要があります。

于 2008-08-26T22:19:48.573 に答える
23

まず、パスワードなし (公開鍵ログイン) を設定していることを確認する必要があります。構成ファイルの形式がわずかに異なる ssh には、少なくとも 2 つのフレーバーがあります。システムのsshマンページを確認するか、ローカルのシステム管理者に相談するか、公開鍵認証をセットアップするにはどうすればよいですか? に進んでください。.

バッチ モード (シェル スクリプト内など) でsshを実行するには、実行するコマンドを渡す必要があります。構文は次のとおりです。

ssh host command

同時に複数のコマンドを実行する場合は、引用符とセミコロンを使用します。

ssh host "command1; command2"

引用符は、シェル インタープリターからセミコロンを保護するために必要です。これらを省略した場合、最初のコマンドのみがリモートで実行され、残りはすべてローカル マシンで実行されます。

于 2008-08-26T22:34:57.350 に答える
2

~/.ssh/authorized_keysSSH 公開鍵をリモート ホスト上のファイルに入れる必要があります。次に、そのホストにパスワードなしで SSH 接続できるようになります。

または、 を使用することもできますssh-agent。スクリプトにパスワードを保存しないことをお勧めします。

于 2008-08-26T22:23:45.940 に答える
1

コマンドを使用expectして、ユーザー名/パスワード情報を入力できます。

于 2008-08-26T22:18:30.557 に答える
-2

最も簡単な方法は、スクリプトを実行するユーザーの証明書を使用することです。

より複雑なものは、シェル コマンドがパスワードを要求したときにパスワードを stdin に追加することを意味します。Perlライブラリがパスワードを尋ねるプロンプトをユーザーに表示することを期待してください(少なくともインタラクティブであれば)、多くの選択肢があります。

于 2008-08-26T22:26:43.157 に答える