this questionには、ステートメントをセミコロンで区切って回答したようです。しかし、複数のif文と複雑な引用符付きの文字列を使用して複雑なスクリプトを作成すると、煩雑になる可能性があります。私は思うだろう。SSHを使用してリモートマシン上で複数のコマンドを発行する別の方法はありますか?
複数のSSHコマンドを1つずつ発行することもできますが、もう厄介なことになります。さらに、パブリック/プライベートキー認証用に設定されていないので、回。
対話的なシェル体験とよく似ているのは、スクリプトの1つの点で、@ the_remote_serverにsshし、(対話形式で)入力したパスワードを入力するように求めます。スクリプトが "exit"コマンドを発行するまで、スクリプト内のすべてのコマンドはリモートマシン上で解釈されます。もちろん
これは動作しません:
ssh [email protected]
cd some/dir/on/remote/machine
tar -xzf my_tarball.tgz
cd some/other/dir/on/remote
cp -R some_directory somewhere_else
exit
は、別の代替はありますか?私はスクリプトの中からその部分を取り出し、それをリモートホスト上のスクリプトに貼り付けることができると思います。 Meh。今私は2つのスクリプトを維持しています。プラス私は少しの設定ファイルがデフォルトと他のものを保持したいと思うし、私は2つの場所でそれを維持したくない。
他に解決策はありますか?
のような。ありがとう! –
あなたのheredocスクリプトがより複雑になり(特に変数を使用)、heredoc delimterを引用する必要があります: '' '' EOF ''。その後、heredocは文字通りリモートマシンに送られ、あなたのローカルシェルはそれを解釈しようとしません。 –