후속 컬 명령의 표준 입력을 파괴하지 않고 ssh를 통해 명령을 실행하려면 어떻게 해야 합니까?

후속 컬 명령의 표준 입력을 파괴하지 않고 ssh를 통해 명령을 실행하려면 어떻게 해야 합니까?

이 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.

관련 정보