自動化を好む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
既存の組み込みLINUXシステムの開発プロセスでは、すべてのエンジニアは2つの異なるデバッグモードを使用してシステムのカーネルとアプリケーションを別々にデバッグするのにうんざりしています。まず、JTA
<レイヤ2トンネリングプロトコル(L2TP)は、通信にUDPポート1701を使用する業界標準のインターネットトンネリングプロトコルです。 L2TP自体には暗号化はありませんが、IPSecを使用してL2
実際に読むときには、共有記憶領域の説明は役に立ちませんので、小さなプログラムを書いて、子プロセスを大まかに作成し、子プロセスはその文字列を端末から受け取り、共有領域に格納します。文字列を読み、それを
Linuxシステムを使用する多くのユーザーは、多くの場合、グラフィカルインターフェイス操作よりコマンドライン操作のほうが速いと感じ、コマンドラインコマンドを使用すると半分の労力で2倍の結果が得られます
Windows 10システム用のアンインストールされたModernアプリケーションアイコン
Windows10なぜWord2016が各起動後に初めて起動されるのか、速度が非常に遅い、2回目以降の起動が速い
Win8システムのVMware仮想マシンのマウントハードディスクは、ハードディスクの障害の理由と解決策をマウントするための失敗を促します
Win7システムの右クリック画像が保存されているときにデスクトップオプションがない場合はどうすればいいですか。
このアプリケーションソリューションを実行するためのランタイムのバージョンが見つかりません
Uディスクを挿入したwin7システムコンピューターの表示空き容量0KBどうしたのか