BashからPythonスクリプトに「Enterキー」を送信する

BashからPythonスクリプトに「Enterキー」を送信する

Bashスクリプトを使用してUbuntuの設定を自動化しようとすると、次の問題が発生します。

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

関連情報