以下のスクリプトを作成しました。
main.sh
ls
./os.sh
os.sh
cat /etc/os-release
実行は次のとおりです
ssh user@serverA "bash -s" < ./main.sh "hi" "bye"
ただし、これはコマンドの場合にのみ機能し、main.sh
リモートシステムで検索したいコマンドを実行することはできませんos.sh
。os.sh
しかし、このタイプのスクリプトはどのように機能しますか?
ベストアンサー1
スクリプトとすべての必須依存関係を含むディレクトリ全体を一時ディレクトリに転送できます。
user
onのログインシェルがhost
POSIXに似ていて、mktemp
コマンドがあると仮定すると、次のようになります。tar
gunzip
tar cf - . | gzip -1 | ssh user@host '
set -o errexit
tmpdir=$(mktemp -d)
trap '\''rm -rf -- "$tmpdir"'\'' EXIT TERM HUP ALRM
cd -P -- "$tmpdir"
gunzip | tar xf -
./main.sh'