
두 개의 bash 스크립트 가 있고 main.sh
하나는 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
등 의 임시 파일을 처리하기 위한 추가 코딩이 필요할 수 있습니다.
답변2
이것은 추악하지만 작동해야 합니다.
ssh user@host bash < <(sed 's/\. util\.sh/ {r util.sh; d}' main.sh)
이렇게 하면 util 스크립트의 내용이 기본 스크립트에 포함되어 원격 호스트에서 실행되는 bash 프로세스로 연결됩니다. 큰따옴표를 제거했습니다. 프로세스 교체는 두 파일이 모두 있는 로컬 컴퓨터에서 실행되어야 합니다.