問題タブ [expect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
8800 参照

bash - TCPを介してパターンを一致させるにはどうすればよいですか?

監視スクリプトを作成しようとしています。サーバー上のポートに接続し、出力を読み取り、出力が期待値の場合は1を出力し、そうでない場合は0を出力する必要があります。

私はを含む解決策に取り組んでいますcat < /dev/tcp/hostname/portが、解決策は私にはわかりません。多分何かが期待を含む?私はbashスクリプトソリューションを好みます。感謝します!

0 投票する
3 に答える
29575 参照

tcl - Expectでコマンド出力を保存して解析するにはどうすればよいですか?

Linux サーバーで、システム情報を収集するためにルーターに telnet で接続することになっている Expect スクリプトを作成する途中です。これまでのところ、私のスクリプトは正常に接続を確立し、ルーター コマンドを実行し、切断して終了することができます。

このコマンドは、解析する必要がある数行を表示しますが、Expect でどうすればよいかわかりません。出力を保存し、行をgrepし、次に行から列を作成し、最後に結果をファイルに保存するにはどうすればよいですか? 可能であれば、回避策ではなく完全にExpectを使用したいと思います(たとえば、Bashに埋め込まれたExpectなど)。

御時間ありがとうございます。jk04

0 投票する
2 に答える
1161 参照

testing - バイナリ プロトコル テスト用の Expect に似たツール

Expectのようなものを使用して、単純なバイト指向プロトコルのテストを書きたいと思います。テスト スクリプトは、次の単純なストリームのようになります。

(send は stdout に書き込み、exp​​ect は stdin から十分に読み取り、一致しない場合は終了します。)

バッファリングされた行指向の対話用に設計されているため、expect 自体は使用できません。同じ理由で、grep や awk を使用したパターン マッチングも廃止されました。

使用できる UNIX ツールまたはライブラリはありますか? 既存のプログラムと統合する必要があるため、標準で移植可能であればなおさらです。

0 投票する
1 に答える
592 参照

expect - ncurses - 予期: sleep が間違った時間に実行される

繰り返しテストするために自動化する必要がある ncurses アプリがいくつかあります。「send」コマンドの間に「sleep」コマンドを配置しています。ただし、画面が読み込まれる前に、すべてのスリープが最初に実行されることがわかります。送信を連結し(スリープ中の画面の下部にあることがわかります)、それらを一緒に発行することを期待しています。

「send -s」または「send -h」ですべてのキーを送信しようとしました。それはわずかに役立ちます。1行目の「-f」を「-b」に置き換えました-これも小さな違いです。

「睡眠」が適切なタイミングで一時停止しないのはなぜですか。ちなみに、私のプログラムには getc() ループがあるので、「expect」コマンドを使用できません。私もそれを試しました。

0 投票する
2 に答える
892 参照

networking - cygwin の期待値は net use で動作しませんか?

cygwin で「net use」コマンドを自動化する必要があります。

コマンドは「net use /user:"name" \somewhere」です。そして「'name' が 'prosseek' に接続するためのパスワードを入力してください:」でパスワードの入力が期待されます。

コマンドライン入力でも、バッチファイル内で実行してもうまく機能します。次のように期待スクリプトを作成すると機能しません。

p>

次のようなエラーメッセージが表示されます。

p>

  • Q : 何が問題なのですか?
  • Q : 「net use」などの一部の MS コマンドは cygwin/expect で動作しますか?
0 投票する
3 に答える
6513 参照

shell - インターフェイスがパスワードを要求したときに、シェル スクリプトを使用してパスワードを提供する方法

実行時にパスワードを要求するスクリプト ( dobrt ) があります。dobrtを実行し、要求されたパスワード自動的に提供するスクリプトを作成するにはどうすればよいですか。

を実行する ./dobrt -p file.txtと、システムがパスワードを要求します。スクリプトによってパスワードが自動的に送信されるようにします。ここに出力があります

これにはシェルスクリプトとexpecxtスクリプトを使用してみました。これが私がしたことです。

私は2つのスクリプトを持っています。最初のスクリプト (run_dobrt.sh) から 2 番目のスクリプト (run_dobrt.exp) を呼び出します。

スクリプト 1: run_dobrt.sh

スクリプト 2: run_dobrt.exp

run_dobrt.sh を実行すると、次のエラーが表示 されますrun_dobrt.sh[20]: spawn: not found このエラーを取り除き、このタスクを完了するにはどうすればよいですか? 助けてください。

0 投票する
2 に答える
1417 参照

java - GDBを使用するテストの作成-出力をキャプチャする方法は?

GDBと相互作用するテストを作成しようとしていますが、出力のキャプチャに問題があります。手作業でテストを実行した場合に端末で見られたようなログファイルを生成したいと思います。ただし、GDBは、出力のキャプチャに関しては非常に頑固であることが証明されています。

GDBと対話でき、出力をログファイルにリダイレクトできるExpectスクリプトを作成できましたが、TCLでテストを作成したくありません。Javaと互換性のあるGroovyを使いたいと思っています。何らかの理由で、PerlのExpectおよびExpectJでは、プログラム出力は常にターミナルに送られ、ファイルにリダイレクトできません。

ProcessBuilderを使用してJavaからGDBプロセスを開始しようとしましたが、ほとんど機能しますが、printステートメントの出力がstdoutに表示されず、キャプチャできません。Expectが機能する場合は、Javaからexpectを起動して、GDBと対話させると思いましたが、この場合、プログラム出力のほとんどが失われ、作成されたプロセスのstdoutに表示されません。

だから私の質問は、GDBと相互作用してすべての出力をキャプチャできるGroovy(Javaも問題ありません)でテストを作成するにはどうすればよいですか?

擬似コード:

ログファイル:

0 投票する
3 に答える
967 参照

bash - プロセスでキー押下を繰り返しエミュレートするbashコマンド

nmapツールにはその ような機能があります-スキャン[#nmap-A-T4 localhost]を実行して「Enter」を押すと、「タイミング:約6.17%完了」という種類のステータス情報が表示されます

質問-ボーンシェルのキーボードに触れずに、このキー押下を強制的に繰り返すにはどうすればよいですか?

ps:phpのproc_open関数のバグの回避策を見つけようとしているだけです。プロセスのstdoutがstdoutパイプを閉じた後にのみ返され、phpのptyエミュレーションがfbsdで機能しない場合。

質問は終了しました。「expect」ユーティリティで解決された問題

0 投票する
1 に答える
1351 参照

ftp - 何年も機能しているスクリプトを期待して、新しい期待バージョンで予期しない動作をする

最近、FreeBSD 4.x サーバーから FreeBSD 8.0 サーバーに移行しました。現在、expect-5.43.0_3 を使用しています。古いシステムのハード ドライブは、移行が完了してから数分以内にクラッシュしたため、expect の古いバージョンが何であるかを覚えていません。すぐに確認することもできません。(うわー!)

とにかく、圧縮された tar ファイルを作成し、毎晩 FTP 経由で転送するスクリプトを期待しています。このスクリプトは YEARS の間正常に実行されています。突然、移行/アップグレード以降、正常に動作しなくなり、修正することができずに DAYS を見つめていじりました。次のステップに進む前に、各 FTP コマンドが正常に完了したことを確認したいと考えています。次のステップには、リモート サーバー上の選択した古いバージョンのファイルを削除することが含まれているためです。正しく機能していません。

したがって、スクリプトのこの部分は引き続き機能します。

...

... 上記の実行に対応するダイアログ ストリームは次のとおりです。

(注 - ハッシュ マークを使用すると、短いタイムアウト値を使用して、スクリプトがハングしているかどうかをすばやく検出できます)

ここまでは順調ですね!過去 6 年間、すべてはまだ機能していますが、次の行は「ftp unexpected prompt 2」で失敗します。探している文字列「\n226」がダイアログ ストリームにあるにもかかわらず、

非常に明確に、「ftp>」の前にダイアログ ストリームに「\n226」があったことに注意してください。「転送」または「完了」に変更してみましたが、それでも同じ効果がありました。現在、正常に完了したことを確認せずにスクリプトを実行していますが、明らかに満足していません。次の手順で選択した古いファイルが削除されるため、事故が発生するのを待っています。これは望ましくありません。これらのファイルが正常に転送されなかった場合、現在テストしていません。

入力ストリームのバッファリング/処理で何かが変更され、「ftp>」文字列を「見る」前に「\n226」または「転送」または「完了」を「見る」ように変更する必要があると思います、 しかし、なぜ?さらに言えば、どのように?:)

0 投票する
3 に答える
1019 参照

tcl - テキストベースのメニューのテストを自動化する方法

リモートの Linux ホストでテキスト ベースのメニューを実行しています。私はこのホストに ssh するために expect を使用しており、メニューを操作する方法を理解したいと考えています。対話には、上下の矢印キーと、Enter および Back 矢印キーの使用が含まれます。例えば、

システムに入ると、切断が強調表示されます。したがって、Enter キーを 2 回押すだけで、システムから切断できます。2 回目の入力で切断が確認されます。

次のコードは、私のシステムに SSH 接続し、メニューを表示します。Expect eof を削除して、これが [切断] メニュー オプションを選択することになると考えて "\r" を送信しようとすると、次のエラーが表示されます。

私は virterm と term_expect の例を見てきましたが、それらを微調整して私のために働く方法がわかりません。誰かが私を正しい方向に向けることができれば、私はそれを大いに感謝します. 私が知る必要があるのは、テキストベースのメニューシステムとやり取りできるか、これを行うための正しい方法は何か、存在する場合の例は素晴らしいでしょう.

ありがとう、レーガン