다음에게 명령을 보내고 싶습니다.목장 경영자파일에 대해 알아볼 수 있는 컨테이너입니다.
명령줄에서 실행하면 다음과 같습니다 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내가 사용하고 있거나가다사용하는 버전입니다.
.sh
rancher
어쨌든, 내가 보내는 명령으로 스크립트를 유인할 수 있는 해결 방법이 있나요 ? 그것이 중요해 보이기 때문에 그것이 목표로 하는 콘솔 출력이라고 믿게 만드나요?
답변1
나는 근본 원인을 찾지 못했지만 동료 중 한 명이 문제에 대한 해결책을 찾았습니다.
- 패키지를 설치합니다
expect
. unbuffer
이전에 명령 추가rancher
이것은 스크립트에서 작동합니다.
ALL_STATES_FILES=$(unbuffer rancher $AUTHENTICATION --env $ID exec $CONTAINER_ID bash -c "find /opt/ -name states.xml")