"exec bash"는 bash 명령줄에서는 작동하지만 스크립트에서는 작동하지 않습니다. 도구는 "제공된 파일이 콘솔이 아닙니다"라는 응답으로 거부되었습니다. 어떤 해결책이 있나요?

"exec bash"는 bash 명령줄에서는 작동하지만 스크립트에서는 작동하지 않습니다. 도구는 "제공된 파일이 콘솔이 아닙니다"라는 응답으로 거부되었습니다. 어떤 해결책이 있나요?

다음에게 명령을 보내고 싶습니다.목장 경영자파일에 대해 알아볼 수 있는 컨테이너입니다.

명령줄에서 실행하면 다음과 같습니다 bash.

rancher --url ... --access-key ... --secret-key ... --env 1a5 exec 1i845011 bash -c 'find /opt/ -name states.xml'

내가 원하는 파일 목록을 반환합니다.

그러나 .sh다음과 같이 스크립트에서 실행하거나 `로 묶으면 실패합니다.

# The command line that is in my .sh script :
ALL_STATES_FILES=$(rancher $AUTHENTICATION --env $ID exec $CONTAINER_ID bash -c "find /opt/ -name states.xml")

# fails, mentioning this if I ran my script with a `bash -x` :
rancher --url ... --access-key ... --secret-key ... --env 1a5 exec 1i845011 bash -c 'find /opt/ -name states.xml'
ALL_STATES_FILES='time="2021-02-11T14:41:56+01:00" level=fatal msg="provided file is not a console" '

이후에 -t-i옵션을 추가하려고 시도했지만 exec성공하지 못했습니다.

그 이상한 메시지,"제공된 파일이 콘솔이 아닙니다.",~인 것 같다에서가다인터넷을 통해 검색하면 스크립트/소스 코드가 표시됩니다. 그러므로 그것은할 수 있다실수다랜처 1.6내가 사용하고 있거나가다사용하는 버전입니다.

.shrancher어쨌든, 내가 보내는 명령으로 스크립트를 유인할 수 있는 해결 방법이 있나요 ? 그것이 중요해 보이기 때문에 그것이 목표로 하는 콘솔 출력이라고 믿게 만드나요?

답변1

나는 근본 원인을 찾지 못했지만 동료 중 한 명이 문제에 대한 해결책을 찾았습니다.

  • 패키지를 설치합니다 expect.
  • unbuffer이전에 명령 추가rancher

이것은 스크립트에서 작동합니다.

ALL_STATES_FILES=$(unbuffer rancher $AUTHENTICATION --env $ID exec $CONTAINER_ID bash -c "find /opt/ -name states.xml")

관련 정보