リモートコンピュータからファイルを削除する必要があるシェルスクリプトを作成しています。
手動ワークフロー:
- リモートシステムにログインします。
ssh [email protected]
- リモートコンピュータ(
domain
)で次のコマンドを入力します。cd ./some/where rm some_file.war
スクリプトでこれを行うにはどうすればよいですか?
答え1
シェルを起動する代わりに、コマンドを SSH クライアントに渡して SSH コマンドに追加して実行できます。
ssh [email protected] 'rm /some/where/some_file.war'
cd
フルパスを指定すると、何かを削除するために別の場所に移動する必要がないため、この手順をスキップできます。
次の問題は認証です。ただ実行すると、パスワードの入力を求められます。これを対話的に入力したくない場合は、公開鍵認証を設定する必要があります。
答え2
sudoを使用してリモートファイルを削除するには、次のコマンドを実行する必要があります。
ssh -tt user@host 'stty raw -echo; sudo rm /path/to/file' < <(cat)
詳細。
答え3
sshコマンドには、リモートコマンドを実行するために使用できるコマンドパラメータ(コマンドの最後のパラメータ)があります。
答え4
パスワードのないキーを設定し、このコマンドをsshコマンドの一部として追加します。望むより:http://www.dotkam.com/2009/03/10/run-commands-remotely-via-ssh-with-no-password/