2

私のプロジェクトでは、インタラクティブなシェル スクリプトを Web GUI を介してリモートで実行する必要があります。これは、スクリプトの標準出力に出力されたものを GUI で利用可能にする必要があり、ユーザー入力を GUI から取得してスクリプトの標準入力に書き込む必要があることを意味します。

私の質問は次のとおりです (a) これは良い考えですか (それが要件であるという事実はさておき)。(b) この種の問題を以前に解決した人はいますか? はいの場合、それを行うための「最善の」方法は何ですか?

編集 #1: 実行されるスクリプトは、Web サーバーと同じホスト上にありません。

編集#2:

ご回答ありがとうございます。ユーザーが 1 つまたは複数のスクリプトを開始し、ブラウザーを閉じ、しばらくしてから戻ってスクリプトの出力を確認し、入力を提供できるため、ブラウザー側のソリューションは私の目的に合わないのではないかと心配しています。

私が思いついた設計では、スクリプトの出力を別のファイルに保存し、ユーザーがブラウザーを起動すると、ファイルから読み取りを開始し、スクリプトの実行が完了するまで (Ajax を介して) ポーリングを続けます。

4

5 に答える 5

2

これを機能させるには、何らかのバックグラウンド プロセスが必要なようです。単一のスクリプトから実行することはできません。そのようなスクリプトが実行されている間、ブラウザーはページを読み込んでいると見なすためです。これに予想以上の時間がかかる場合は、中止してその旨を伝えます。「サーバーの応答に時間がかかりすぎました」

したがって、実際には、別のプロセスを生成/フォークし、クライアント側からサーバーに定期的にリクエストを行う必要があります。これにより、サーバー側のスクリプトがプロセスに接続し、メッセージを交換します。

たとえば、 phptermを参照してください。

于 2009-03-03T07:01:33.710 に答える
1

考慮しない理由があるかもしれませんが、サーバーへの Web ベースのシェルはどうでしょうか? 例: AjaxTerm ( http://antony.lesuisse.org/software/ajaxterm/ )

思い出したように、ログインできるユーザー アカウントを構成できます。その後、通常の制御を適用して、ユーザーが実行できるスクリプト (または chroot?) を制限できます。

結局のところ、シェル スクリプトを実行したい場合は、シェルを使用してみませんか? :)

于 2009-03-04T16:43:32.760 に答える
1

CGみたいだな

于 2009-03-03T06:55:35.380 に答える
0

Expectを使用して、nohup またはバックグラウンド ジョブとしてプロセスを開始し、ログアウトし、定期的にログインしてログファイルをチェックするか、入力を提供するユーザーを模倣することができます。

于 2010-10-20T11:50:13.973 に答える
0

それはおそらく素晴らしい考えではありません。対話型シェル スクリプトは、通常、Web ページから実行されることはありません...

もちろん可能です。

代わりに、達成したいことを考えて、標準の Web コンポーネントで構成される優れた UI を作成してください。「魔法使い」のように機能するものを作成できますか?

于 2009-03-03T07:01:08.377 に答える