!["exec bash"는 bash 명령줄에서는 작동하지만 스크립트에서는 작동하지 않습니다. 도구는 "제공된 파일이 콘솔이 아닙니다"라는 응답으로 거부되었습니다. 어떤 해결책이 있나요?](https://linux55.com/image/187895/%22exec%20bash%22%EB%8A%94%20bash%20%EB%AA%85%EB%A0%B9%EC%A4%84%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%EB%A7%8C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EB%8F%84%EA%B5%AC%EB%8A%94%20%22%EC%A0%9C%EA%B3%B5%EB%90%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%BD%98%EC%86%94%EC%9D%B4%20%EC%95%84%EB%8B%99%EB%8B%88%EB%8B%A4%22%EB%9D%BC%EB%8A%94%20%EC%9D%91%EB%8B%B5%EC%9C%BC%EB%A1%9C%20%EA%B1%B0%EB%B6%80%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%96%B4%EB%96%A4%20%ED%95%B4%EA%B2%B0%EC%B1%85%EC%9D%B4%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
다음에게 명령을 보내고 싶습니다.목장 경영자파일에 대해 알아볼 수 있는 컨테이너입니다.
명령줄에서 실행하면 다음과 같습니다 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")