リモートコンピュータでローカルスクリプトを実行する方法(別のローカルスクリプトを実行)

リモートコンピュータでローカルスクリプトを実行する方法(別のローカルスクリプトを実行)

以下のスクリプトを作成しました。

main.sh

ls
./os.sh

os.sh

cat /etc/os-release

実行は次のとおりです

ssh user@serverA "bash -s" < ./main.sh "hi" "bye"

ただし、これはコマンドの場合にのみ機能し、main.shリモートシステムで検索したいコマンドを実行することはできませんos.shos.shしかし、このタイプのスクリプトはどのように機能しますか?

ベストアンサー1

スクリプトとすべての必須依存関係を含むディレクトリ全体を一時ディレクトリに転送できます。

useronのログインシェルがhostPOSIXに似ていて、mktempコマンドがあると仮定すると、次のようになります。targunzip

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'

おすすめ記事