이 bash 스크립트는 ssh를 통해 다른 곳에서 토큰을 가져온 다음 컬 명령을 실행하여 stdin의 파일에서 데이터를 읽어야 합니다.
#!/usr/bin/env bash
TOKEN=$(ssh somewhere cat sometoken.txt)
curl https://example.com \
-H "Authorization: Bearer $TOKEN" \
-H "someparam=@-" \
-X POST
스크립트는 다음과 같이 호출됩니다.
cat somefile | myscript
컬을 사용 하는 TOKEN=abcd123
대신 하드코딩하면 예상대로 업로드됩니다.$(ssh ...)
somefile
하지만 내 파일을 사용할 때 $(ssh ...)
업로드되지 않습니다.
내 스크립트의 표준 입력이 손상된 것 같은데 $(ssh ...)
이 문제를 해결하는 방법을 모르겠습니다.
어떤 도움이라도 대단히 감사하겠습니다.
답변1
즉, 사용ssh -n ...
이 ssh
도구는 표준 입력에서 모든 데이터를 읽습니다. 이는 원격 측에서 실행하는 모든 명령에 전달될 수 있도록 수행됩니다( ssh remote 'cat >out' <in
원하는 경우 파일 내용을 원격 시스템에 복사하는 데 사용할 수 있습니다).
옵션을 통해 -n
이를 수행하지 않도록 지시할 수 있습니다. /dev/null
표준 입력으로 리디렉션하는 것과 거의 동일합니다 ssh ... </dev/null
.