この記事では、シェルによる自動対話を実現するためのexpectコマンドについて、ループや判定などの簡単な制御フロー機能をシェル経由で実装できる例を交えて説明します。以下の記事では、シェルの自動対話を実現するための Expect コマンドの使用に関する関連情報を中心に、サンプルコードを通じて詳しく紹介しています。必要な方は一緒に参照してください。
背景
Linux スクリプトには、リモート ログイン ssh、リモート コピー scp、ファイル転送 sftp など、リモート操作のための多くのシナリオがあります。これらのコマンドにはセキュリティ パスワードの入力が必要です。コマンドを通常に使用するには、パスワードを手動で入力し、セキュリティ検証を受け入れる必要があります。自動化されたリモート操作を実現するために、expect の機能を借用できます。
expect は、人間の介入なしで通信するための自動化された対話型タスクを実装するために使用される無料のプログラミング ツール言語です。 Expect は時間の経過とともに常に進化しており、その機能はますます強力になり、システム管理者の強力なアシスタントとなっています。 Expect をシステム上で実行するには、まず Tcl プログラミング言語のサポートが必要です。
expectのインストール
expectはTclに基づいて作成されているため、expectをインストールする前にTclをインストールする必要があります。
(1) Tclのインストール
ホームページ: http://www.tcl.tk
ダウンロードアドレス: http://www.tcl.tk/software/tcltk/downloadnow84.tml
1.ソース コード パッケージをダウンロードします
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
2. ソース コード パッケージを解凍します
tar xfvz tcl8.4.11-src.tar.gz
3. インストールと設定
1. インストールが完了したら、tcl ソース コードのルート ディレクトリに移動し、tclUnixPort をコピーします。サブディレクトリ unix の下の .h をサブディレクトリ generic にコピーします。
2. tcl ソース コードは、予期されるインストール プロセスにまだ必要であるため、まだ削除しないでください。
(2) インストールを期待します (Tcl ライブラリが必要です)
ホームページ: http://expect.nist.gov/
1. ソースコードパッケージをダウンロードします
cd tcl8.4.11/unix ./configure --prefix=/usr/tcl --enable-shared make make install
2. ソースコードパッケージを解凍します
wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
3. インストールと設定
tar xzvf expect5.45.tar.gz
expect
expect のコアは、spawn、expect、send、set です。
spawn は実行するコマンドを呼び出します
その他の設定
expect は tcl 構文を使用します
login.expは、リモートログイン、ショートカットメソッド専用です。 :login.exp "exclude" "${remote_ip} " "${remote_user}" "${remote_passwd}" "${remote_command}"
cd expect5.45 ./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic make make install ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
日付に従ってファイルをダウンロードする Linux シェルの FTP メソッド
以上がシェルの自動対話を実装するための Expect コマンドを説明する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。