Bash에서 Python 스크립트로 "Enter 키" 보내기

Bash에서 Python 스크립트로 "Enter 키" 보내기

Bash 스크립트를 사용하여 우분투 설정을 자동화하려고 하는데 다음 문제가 발생합니다.

enter스크립트가 실행될 때 자동으로 키 입력을 보내길 원합니다 umake ide eclipse(이렇게 하면 터미널에서 Eclipse IDE가 설치됩니다).

다음은 스크립트 없이 터미널에서 실행할 때의 표준 출력입니다.

$ umake ide eclipse
Choose installation path: /home/gn4i/.local/share/umake/ide/eclipse
<need to press enter>
Downloading and installing requirements      

일반적으로 이 작업을 수행 echo | umake ide eclipse하지만 항상 다음 오류가 발생합니다.

 $ echo | umake ide eclipse
Choose installation path: Choose installation path: ERROR: Unhandled exception
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/umake/tools.py", line 158, in wrapper
    function(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/umake/ui/__init__.py", line 42, in display
    cls.currentUI._display(contentType)
  File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 61, in _display
    contentType.run_callback(result=rlinput(contentType.content, contentType.default_input))
  File "/usr/lib/python3/dist-packages/umake/ui/cli/__init__.py", line 41, in rlinput
    return input(prompt + " ")
EOFError: EOF when reading a line

이 설치를 어떻게 자동화할 수 있나요?

답변1

저는 스크린 방식을 사용하여 이 문제를 해결했습니다. 이 작업은 백그라운드에서 실행되므로 진행 상황을 볼 수 없지만 괜찮습니다.

screen -d -m -S umake-eclipse
screen -S umake-eclipse -p 0 -X stuff "umake ide eclipse\n\n"

답변2

매우 간단한 expect스크립트를 사용하십시오.

spawn umake ide eclipse
expect "Choose installation path:" { sleep 1; send "\r" }

실행하세요:

$ expect -f script.expect

답변3

umake@Kusalananda의 답변은 명령 실행이 명령 후에 중지되기 때문에 실제로 작동하지 않습니다 send.

확장된 작업 솔루션은 다음과 같습니다.

#!/usr/bin/expect

spawn umake ide eclipse
expect "Choose installation path:" { send "\r" }
interact

관련 정보