
저는 현재 몇 가지 셸 명령을 실행해야 하는 centos 7 VM에서 Python 스크립트를 작성 중입니다. 해당 작업을 수행하는 라이브러리를 찾았지만 그 중 하나에서 오류가 발생했습니다. 나는 텍스트 파일에서 해당 명령을 받았기 때문에 실제로 그 명령이 무엇을 하는지는 모릅니다. 나는 간단한 것을 이해하지만 이것은 내 수준보다 높습니다. 2줄만 오류가 발생하므로 스크립트 자체가 아니라 어떻게 사용하는지 알 수 있습니다. ./linkerd
~이다링커드의linkerd_images.txt에는 이미지 목록이 있는 반면 바이너리 파일은 다음과 같습니다.
./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt
./linkerd viz install --ha --skip-checks | grep images: | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt
나는 그들이 링커드의 바이너리를 사용하기 때문에 응용 프로그램에 고유할 수 있다는 것을 알고 있습니다. 그렇다면 해당 저장소에서 문서를 찾을 수 없기 때문에 문서를 어디서 찾을 수 있는지 알아내야 합니다(따라서 내가 여기에 먼저 온 이유).
편집: 스크립트에 발생한 오류는 다음과 같습니다.
UnicodeDecodeError: 'utf-8' codec: can't decode byte 0xe2 in position 49: Invalid continuation byte
터미널에서 첫 번째 명령을 단독으로 실행하면 다음과 같은 결과가 나타납니다.
sed: -e expression #1, char 1: unknown command: '[Question Mark Symbol]'
나는 실제로 내 Python 코드에 대한 직접적인 답변을 기대하지 않기 때문에 오류 자체에 대해 크게 걱정하지 않습니다. 나는 명령 자체가 모든 멋진 캐릭터에 대해 무엇을 하는지 이해하고 싶습니다.
파이썬 코드를 추가하라는 요청을 받았습니다. 나는 asyncio
~를 사용했다실행 기능대부분의 쉘 명령을 실행합니다. 따라서 Python 코드 자체는 간단합니다.
asyncio.run(run(
"""./linkerd install --ha --ignore-cluster | grep image: | grep linkerd | sed -e 's/^ .*images: //' | sort | uniq >> linkerd_images.txt"""))
또한 linkerd 바이너리 파일을 확인했는데 json 파일처럼 보입니다.
답변1
내가 찾은 답은 다음과 같습니다
문제는 캐럿이 아니라 아포스트로피였습니다. 나에게 명령을 준 사람은 프랑스어 키보드로 명령을 입력했습니다. 업무용 PC에 있어서 다른 화면을 보면서 여기에 입력했기 때문에 별 생각 없이 아포스트로피를 제대로 다시 입력했습니다. 이제 sed의 오류와 그 의미를 살펴보니 훨씬 더 의미가 있습니다. sed -e expression #1
는 다음의 첫 번째 단어입니다 -e
(이 경우 's/^
). Char #1은 '
내가 미리 알았더라면 처음에 살펴봤어야 했던 곳일 것입니다 .