SSH를 통해 다른 스크립트를 참조하는 쉘 스크립트 실행

SSH를 통해 다른 스크립트를 참조하는 쉘 스크립트 실행

두 개의 bash 스크립트 가 있고 main.sh하나는 util.sh. utils.sh이제 SSH를 통해 실행하고 싶습니다. 분명히 이것은 작동하지 않습니다.main.sh. util.shmain.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등 의 임시 파일을 처리하기 위한 추가 코딩이 필요할 수 있습니다.

답변2

이것은 추악하지만 작동해야 합니다.

ssh user@host bash < <(sed 's/\. util\.sh/ {r util.sh; d}' main.sh)

이렇게 하면 util 스크립트의 내용이 기본 스크립트에 포함되어 원격 호스트에서 실행되는 bash 프로세스로 연결됩니다. 큰따옴표를 제거했습니다. 프로세스 교체는 두 파일이 모두 있는 로컬 컴퓨터에서 실행되어야 합니다.

관련 정보