4

現在、複数のプロンプト タイプを探しており、応答としてコマンドを送信しているスクリプトを期待しています。「-re」を使用した正規表現の一致は認識していますが、これを実現する正しい方法を知りたいです。

たとえば、次のプロンプト タイプがあります。

[user@hostname ~]#
user@hostname --->
/ >
-bash-3.00$ 
cli>

これは、上記のすべてを検出するための正しい/十分な表現ですか?

set multiPrompt "(%|#|cli\>|\$|\-\-\-\>)"
expect -re $multiPrompt
send "$someCommand\r"

また、コマンドのリストもありますが、リモート システムで実行された後にプロンプ​​トが変化するコマンドもあります。プロンプトが変更されたため、expect スクリプトが変更を検出して送信アクションを実行できないため、残りのコマンドが送信されません。

私がやろうとしているのは、可能なプロンプトのプールを作成することです。これにより、expect スクリプトがコマンドを逃さずに送信できるようになります。私のアプローチは正しいですか?

4

2 に答える 2

1

古いスレッドであることは承知していますが、これを検索している人にとっては、これが役立つことを願っています。私は UNIX システム管理者であり、プログラムがさまざまな管理機能を呼び出すために必要なスクリプトをいくつか持っています。これは、すべてのユースケースで機能することがわかった1つのソリューションです。

set prompt "(%|#|>|\\$ )"

set prompt [string trim $prompt]

[string trim $prompt]、入力の前にスペースがあるプロンプトとそうでないプロンプトがあるシナリオを、プロンプトを確認するときにスペースを切り取ることで処理します。例: "password:" 対 "password: "

于 2016-02-05T15:00:56.407 に答える