Help us understand the problem. What is going on with this article?

対話形式のスクリプトに自動応答する方法

More than 5 years have passed since last update.

例えばパッケージ化されていないアプリケーションの対話形式のインストーラをChefで扱いたいときにこの方法は役に立ちます。なおChefでこの方法を使うときはインストール後に作られる実行ファイルの有無などで冪等性を保つ必要があります。

使用するコマンド

  • expect
  • autoexpect

これらのコマンド自体はさして新しいものや珍しいものではありません。

expect

指定したスクリプトの内容で対話形式のプログラムに自動応答します。

autoexpect

expectのスクリプトを作成するのに使います。expectのスクリプトは手作業で作成することが可能ですが、何度もテストしながら作るのが結構な手間になったり、思い通りに動かないこともしばしばあります。autoexpectからインストーラを呼び出して実際にインストールを実行すると、同じパラメータでexpectのスクリプトが作成されます。

使い方

環境準備

インストールされていなかったら、yum installapt-getしましょう。

$ sudo yum install expect autoexpect

expectスクリプト作成

$ autoexpect sudo ./<インストーラ>

インストーラが起動しますので、そのままインストールを続け、完了させます。インストーラのプログラムが終了するとautoexpectも終了し、デフォルトでscript.expという名前でexpectスクリプトが作成されます。

自動インストール

目的のプログラムがまだインストールされていない環境にインストーラと上述のscript.expを持ってきて実行します。インストールするプログラムによっては管理者権限が必要になるでしょう。また必要に応じて実行権限もつけておきましょう。

$ chmod +x script.exp
$ sudo ./script.exp

以上。

m-sakano
インフラ専門のエンジニアです。 サーバー、ネットワーク、ストレージ、ミドルウェアなどを扱います。 サーバー仮想化、クラウドにも取り組んでいます。 ・AWS認定ソリューションアーキテクト アソシエーションレベル ・VMware認定プロフェッショナル データセンター仮想化
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away