ベンダーによってサポートされなくなった20年前のインタラクティブなコマンドラインUNIXアプリケーションを継承しました。このアプリケーションでは、いくつかのタスクを自動化する必要があります。
これらの中で最も厄介なのは、わずかに異なるパラメータ(たとえば、異なる識別子、異なる名前)を使用して何千もの新しいレコードを作成することです。レコードは一度に1つずつ順番に作成する必要があり、手動で作成するには数か月(したがって数ドル)かかります。ほとんどの場合、レコードの作成には、コマンドの入力、応答の読み取り、追加のコマンドの入力などの非常に予測可能なパターンがあります。ただし、一部のレコード作成操作では、次のようなエラー状態(「この識別子を持つレコードは既に存在します」)が発生します。正常に終了する別のコマンドセット。
私はこれを行うためのいくつかの異なる方法を見ることができます:
名前付きパイプ。STDINとSTDOUTを名前付きパイプに設定してターゲットアプリケーションを実行するPerlスクリプトを記述し、ターゲットアプリケーションに一連のコマンドを送信して、必要なパラメーターを含むレコードを作成し、ターゲットアプリケーションに終了してシャットダウンするように指示します。次に、さまざまなパラメーターを使用して、必要な回数だけスクリプトを実行します。
応用。インタラクティブプログラムのスクリプトを作成するために使用できる別のUnixツールを見つけてください。私が見つけることができたのは期待されているものだけですが、これは維持されているようには見えません。チャットは昔から思い出しており、多かれ少なかれ私が望んでいることをしているように見えますが、モデムを制御するためだけのもののようです。
もう1つの潜在的な問題:ターゲットアプリケーションはVT100端末用に作成されており、ある種のエスケープシーケンスを使用して、強調表示の提供などを行っていると思います。
私の質問は、どのようなアプローチを取るべきかということです。これらの1つ、または完全に異なる何か?名前付きパイプを使用し、FIFOを開いて必要に応じて読み取りと書き込みを行うPerlスクリプトを使用するというアイデアは非常に気に入っています。柔軟性が高いためですが、私が読んだところによると、私はこの道を進みます。
前もって感謝します。