Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxでexpectスクリプトを柔軟に使用するためのヒント

Linuxでexpectスクリプトを柔軟に使用するためのヒント

  

自動化を好むLinuxシステム管理者には、コマンドラインツールを使用する必要があります。 Don LibesがTcl言語に基づいて開発し、対話型操作や自動テストシナリオで広く使用されているExpectは、複数のサーバーで同じ操作を必要とする環境で特に役立ち、システム管理者を大幅に改善します。作業効率この記事は、thegeekstuff.comによって最近更新された技術的に共有された記事で、さまざまなコマンドラインオプションを使ってexpectスクリプトを実行する方法を詳しく説明しています。

この記事は、あなたがexpectの基本的な使い方にある程度慣れていることを前提としています。

expectスクリプト言語に慣れていない場合は、Expectの "hello world"の例から始めることができます。

1.' -c'オプションを使用して、コマンドラインからexpectスクリプトを実行します。

expectは、以下のように" -c'オプションを使用してコマンドラインから直接実行します。表示:

$ expect -c '予想" \\ n" {送信"入力Enter \\ n"}

押された入力

$

上記のスクリプトを実行すると、改行文字(\\ n)を待ちます。 [Enter]ボタンを押すと、[Enter]を押して終了するというメッセージが表示されます。

2、' -i'オプションを使用して対話的にexpectスクリプトを実行する

2' -i'オプションを使用すると、標準入力からreadコマンドを使用して対話的にexpectスクリプトを実行できます。下に示すように:

$ expect -i arg1 arg2 arg3

expect1.1> set argv

arg1 arg2 arg3

expect1.2>

通常、上記のexpectコマンドを実行すると(' -i'オプションはありません)、arg1はスクリプトのファイル名として扱われるため、' -i'オプションを使用するとスクリプトは複数のスクリプトを持つことができます。パラメーターは連続リストとして扱われます。

このオプションは、' -c'オプションを指定してexpectスクリプトを実行するときに役立ちます。デフォルトでは、expectは対話的に実行されるからです。

3、expectスクリプトを実行すると、デバッグ情報を出力します。

- ' -dオプションを使用してコードを実行すると、診断情報を出力できます。以下に示すように:

$ cat sample.exp

#!/usr /bin /expect -fexpect"; \\ n";送信";を押して"; $ expect -d sampleと入力します。 Expexpectバージョン5.43.0argv [0] = expect argv [1] = -d argv [2] = sample.expset argc 0set argv0 "sample.exp" set argv ""コマンドファイルsample.exp

expect: "(spawn_id exp0)はグロブパターン" \\ n "にマッチしますか?no

expect:" spawn_id exp0 "はグロブパターン" \\ n "にマッチします;?yes

expect:set expect_out(0、string)< \\ n"

expect:set expect_out(spawn_id)" exp0"

expect:set expect_out (バッファ)< \\ n>

送信:送信"入力"を押して{exp0と入力しました}

4、' -D'オプションを使用して受信確認デバッガを起動します。

- l - D - rオプションは、ブールパラメータのみを受け付けるデバッガを起動するために使用されます。このパラメータは、プロンプタをすぐに起動する必要があるのか​​、それともデバッガを初期化して後で使用するのかを示します。

$ expect -D 1スクリプト

' -D'オプションの左側にあるオプションは、デバッガが起動する前に処理されます。その後、デバッガの起動後、残りのコマンドが実行されます。

$ expect -c 'タイムアウトの設定10' -D 1 -c '1の設定'

1:1の設定

dbg1.0>

5、1行ずつexpectスクリプトを実行する

通常、expectはスクリプトを実行する前にスクリプト全体をメモリに読み込みます。 ' -b'オプションを指定すると、スクリプトは一度に1行だけ読み込むことができます。あなたが完全なスクリプトを書いていないとき、これは非常に役に立ちます。

$ expect -b

6.コマンドライン引数が解釈されないようにする

識別子を使用すると、コマンドライン引数が解釈されないようにすることができます。

このようにコマンドライン引数を読むことができます。

$ cat print_cmdline_args.exp

#!/usr /bin /expect

puts 'argv0:[lindex $ argv 0]';

は 'argv1:[lindex $ argv 1]'です;

上記のスクリプトを実行すると、コマンドラインオプションはスキップされます。これらは、以下のように(expectオプションの代わりに)引数として扱われます。

$ expect print_cmdline_args.exp -d -c

argv0:-d

argv1: - c

Copyright © Windowsの知識 All Rights Reserved