2つのbashスクリプトがあり、main.sh
1つはutil.sh
。utils.sh
今SSHを介して実行したいと思います。明らかにこれはうまくいきません。main.sh
. util.sh
main.sh
SSHユーザー@ホスト "bash /dev/stdin < main.sh"
リモートシェルが見つからないため、リモートシステムにコピーせずにutil.sh
どうすればよいですか?util.sh
ベストアンサー1
util.sh
展開する方がより良い信頼性の高いソリューションだと思いますが、次のことを行うことhost
ができます。main.sh
#!/bin/bash
U=$(mktemp)
cat > "$U"
. "$U"
rm -f "$U"
# rest of script
その後実行
ssh user@host main.sh < util.sh
セキュリティを強化するには、main.sh
書き込み/削除不可能、入力転送なしstdin
などの一時ファイルを処理するための追加のコーディングが必要になる場合があります。