シェルスクリプトを使用してSSH経由でリモートマシン上のファイルを削除する方法


32

シェルスクリプトを使用してリモートマシン上のファイルを削除する必要があるシェルスクリプトを作成しています。

手動フロー:

ssh username@domain.com

..その後、ドメインで:

cd ./some/where
rm some_file.war

そのタスクを達成するには?

回答:


49

sshシェルを起動する代わりに、sshコマンドに追加することにより、クライアントに実行するコマンドを渡すことができます。

ssh username@domain.com 'rm /some/where/some_file.war'

cd完全なパスを指定している限り、何かを削除するために場所に移動する必要はありません。そのため、別のステップをスキップできます。

次の質問は認証です。実行しただけの場合、パスワードの入力を求められます。これをインタラクティブに入力したくない場合は、公開鍵認証を設定する必要があります。


3
-cはcipher_specだと思った-いいえ?コマンドの受け渡しに-cが必要だとは思いませんでした。
スコットCウィルソン

迅速な回答をありがとうございました。この答えは、ソリューションのほとんどの部分を含んでいたので、今回は@Calebがチェックを付けました。
mico

リモート呼び出しの実行に追加-fする必要がありrmますか?
フェディルライクティック

1
@Fedir NO!質問は、ディレクトリではなくファイルについて具体的に尋ねます。警告またはエラーがスローされたrm場合、ユーザーが何を期待し、何かをオーバーライドしている理由を知らない限り、呼び出し元に確実に渡される必要があります。特定のシナリオで必要なオプションのみを使用することで、多くのミスや後でのイライラするデバッグを回避できます。
カレブ

1
@Fedirの-fオプションrmは省略され--forceており、存在しないファイルまたは偽の引数に対してエラーがスローされるかどうかに影響します。通常、コマンドは非対話型シェルで実行されますが、とにかく非対話型になりますが、対話型プロンプトが表示されないか、対話型プロンプトが表示されるのは、それに直接関連する設定を修正することです。これをスクリプト化する場合は、とにかくその問題は発生しないはずです。また、対話型のシェル(壊滅的なタイプミスの可能性がある場合)を使用-I--interactive=neverている場合は、使用して目的の動作を設定する必要があります。
カレブ


2

sshコマンドには、リモートコマンドの実行に使用できるコマンドパラメーター(コマンドの最後のパラメーター)があります。


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