Ubuntu シェルスクリプトで回答を指定する

Ubuntu シェルスクリプトで回答を指定する

だから私は、net-tools、OpenSSH、Omada Controllerなど、私に合った標準ソフトウェアをインストールするための標準シェルスクリプトを作成しようとしています。 TP Link Omadaコントローラソフトウェアの標準.debを起動するには、いくつかの追加コマンドを正しく設定する必要があるためです。そのうちの1つがコマンドです。

update-alternatives --config java

これにより、0、1、2の3つのオプションを持つプロンプトが表示されます。答えは2でなければなりません。常に、または少なくとも現在リリースされているバージョンではそうです。

これが現在コントローラスクリプトにあります。自動的にインストールするのではなく、ユーザーにインストールを希望するかどうかを尋ねるために、これらすべてを「while」ステートメントに配置する予定です。すべてが好きなように機能したら、printfを削除できます。

#install omada controller
cd /tmp
apt -y install gdebi-core
apt -y install openjdk-8-jdk
printf ${RED}"----------------------------\n\nPress 2 in this next prompt\n\n----------------------------\n"${NC}
update-alternatives --config java
wget https://static.tp-link.com/2020/202012/20201211/omada_v4.2.8_linux_x64.deb
export JAVA_HOME=/usr/lib/jvm/default-java
echo $JAVA_HOME
gdebi omada_v4.2.8_linux_x64.deb

これをシェルスクリプトに入れる方法はありますか? CLIでスクリプトが実行されるのと同じ行に答えを指定する方法を見たことがありますが、これは私が望むものではありません。完全に自動化し、インストール中に既存のプロンプトのいくつかを使用し、上記のパッケージをインストールするように求められます。

答え1

--configueこの対話型オプションを2つの自動オプション、つまり--query--set:に分割できます。

update-alternatives --query <package>

--install代替パッケージをインストール/削除するには、およびオプションを使用できます--remove

構成済みパッケージの表示update-alternatives

優先順位の設定:

update-alternatives --set <package> <PATH>

コマンドgdebiは次のように実行できます。

LANG=en_US.UTF-8 yes |gdebi omada_v4.2.8_linux_x64.deb

答え2

を使用してプロンプトに応答できますexpect。 BashでさまざまなExpectスクリプトを呼び出すことができ、BashでExpectコマンドを実装できます。

期待がインストールされていればそれを得ることもできますautoexpect。これにより、期待スクリプトが生成され、bashスクリプトから呼び出すことができます。

これを実行すると、autoexpect update-alternatives --config javaプロセスが正常に開始され、すべての質問に答えることができます。プロセスが完了すると、autoexpectはインストール中にユーザーが作成した回答を使用して、プロンプトに自動的に応答する予想されるスクリプトを生成します。

答え3

まあ、私は成功した!または少なくとも私が要求した部分。それでもコマンドシーケンス全体をテストする必要がありますが、大丈夫です。ありがとうございます!以下は私が今持っているもので、期待したものは期待どおりに機能します。 (淫乱意図)

関連情報