JP2009527054A - シェル・セッション - Google Patents

シェル・セッション Download PDF

Info

Publication number
JP2009527054A
JP2009527054A JP2008555237A JP2008555237A JP2009527054A JP 2009527054 A JP2009527054 A JP 2009527054A JP 2008555237 A JP2008555237 A JP 2008555237A JP 2008555237 A JP2008555237 A JP 2008555237A JP 2009527054 A JP2009527054 A JP 2009527054A
Authority
JP
Japan
Prior art keywords
command
shell
execution
input
message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008555237A
Other languages
English (en)
Other versions
JP5022382B2 (ja
Inventor
ダブリュ.マッカラム レイモンド
ノーソフ アレクサンダー
レイスタッド ブライアン
クンバリマット ウィシュワ
メンジース スティーブ
リー スティーブ
ヘランダー ジョハネス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009527054A publication Critical patent/JP2009527054A/ja
Application granted granted Critical
Publication of JP5022382B2 publication Critical patent/JP5022382B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer And Data Communications (AREA)

Abstract

本明細書に記載の実施形態は、シェルが、メッセージ内で送信された文字の単位としてコマンドを実行するという原理に基づく。したがって、本明細書の実施形態は、データのバイナリ・ストリームではなく、メッセージを使用してリモート・シェルに一連のコマンドをバインドするバインディング機構を使用することによってコマンドに関するリモート処理セッションを確立することを実現する。より具体的には、本明細書の実施形態は、コマンドとバインディング機構との両者を単一のメッセージにカプセル化する機構を提供する。したがって、セッションの存続時間全体にわたってバインディング機構を使用することができ、一連の文字としてではなく、一連のコマンドとしてシェル・プロセッサ・セッションをモデル化することが可能となる。さらに、シェル・セッションに関するバインディング機構がメッセージ内で送信されるので、現在のシェル・セッションのバイナリまたは文字単位の確立に関連する問題が克服される。

Description

本発明は、シェル・セッションに関する。
コマンドライン・インタプリタまたはシェル・プロセッサは、コンピュータシステムと対話するための一般的な方法である。コマンドは、キーボードからタイプされる文字(例えばテキストおよび制御文字)のシーケンスとして入力され、出力がテキストの文字列(ストリング)として受け取られる。そのようなシーケンスは通常、「何かを行う(do something)」、「どのように(how)」、および「何に対して(to what)」という形式を取る。実際には、do somethingは動詞であり、howは副詞であり(例えば、コマンドを「冗長に(verbosely)」または「静かに(quietly)」実行すべき場合)、to whatは通常、コマンドが作用すべき1つまたは複数のファイルを指す。こうしたコマンドシーケンス内には、コマンドに対する入力、出力をどこに送るかを示すためのリダイレクション文字、他の制御文字などの他の文字が含まれる。
コマンドライン・インターフェースは、使用されている非常に高速な対話式インターフェースの一部であった。グラフィカル・ユーザ・インターフェース(GUI)の出現にも関わらず、コマンドライン・シェルは、ユーザ対話なしに複雑なタスクを自動的に実行するためにユーザコマンドを容易にバッチ処理することができるので、引き続き重要な管理ツールである。現代のオペレーティング・システムは、ユーザが、直接的に、あるいはシェルに組み込まれ、またはシェルと対話するように設計されるユーティリティの助けにより、キーボードからコマンドを入力し、テキスト出力を検討することによって、システムと対話することを可能にするいくつかのコマンドライン・インタプリタをサポートする。現代のオペレーティング・システムはまた、ユーザの代わりにバッチモードでコマンドのシーケンスを実行することも可能にする。
上述のように、歴史的には、そのようなシェル・コマンド・プロセッサは文字指向である。このことは、シェル・コマンド・プロセッサがユーザから文字単位の入力を受諾し、シェルが入力を検討してそれを実行することを試みるべきであることを知らせるための特殊文字(例えば「改行」または「エンタ(Enter)」)を待機する。この文字が供給されたとき、プロセッサは、入力を構文解析し、それが正規のコマンドであるかどうかを判定し、その実行を開始する。入力が正規のコマンドでない場合、通常はエラーが返される。入力が正規のコマンドである場合、コマンドが実行され、コマンドはそれ自体の文字出力を生成することができ、それをオペレータが検討することができる。
ユーザによって使用されるパラダイムは通常、次いでシェルを「オープン」し、キーボードを介してシェルに文字を供給し、シェルがエンタキー(または使用される構文に応じた他の適切な文字)を入力として受け取ったときはいつでも、シェルは、それまでに1単位として受け取ったすべての文字を処理することを試みる。シェル・プロセッサが各単位をコマンドとして実行すると、シェルは出力をレポートする。エラーのある入力に直面した場合、プロセッサは、エラーメッセージを含む1組の文字をユーザに返すことができる。次いで、シェル・プロセッサを終了し、または現存するプログラムを終了することによってユーザがシェル・プロセッサを「閉じる」まで、このサイクルが反復される。
コンピュータがネットワーキングを介して接続されたので、そのようなコマンドをリモートに実行できることが必要となった。したがって、コマンド・プロセッサではなくキーボードがリモートであるかのようにやはり文字単位で機能する、いくつかの周知のリモート・シェル・プロトコルが開発された(例えばTelnet、Secure Telnet、Secure Shellなど)。シェルがオープンされると、文字がやりとりされ、シェル・プロトコルは本質的に、コマンドがいつ実行されるか、あるいは実際には、何らかのコマンドがこれまで実行されたかどうかを認識しない。言い換えれば、プロトコルは単に、入力文字および出力文字をやりとりする。これにより、オペレータがある場所に居て別の場所のコンピュータに対するコマンドを実行することが可能となるが、そのような技法に関していくつかの効率問題、相互運用性問題、および他の問題が存在する。
例えば、あるコマンドは処理するための入力ストリームを必要とするので、この文字単位の手法の結果、挙動が不正確となる可能性がある場合がある。例えば、正確な文字シーケンスがコマンドまたはシェル・プロセッサによって省略される可能性がある障害シナリオ中を考える。そのような場合、入力ストリームが次のコマンドと間違われる可能性があり、または次のコマンドが前のコマンドの入力ストリームと間違われる可能性がある。一例として、それに対する入力がファイルであるコマンドを考える。コマンドを実行するためのリターン文字(例えば「エンタ」)が、ファイルからの入力文字の前に受信されない場合、ファイル内の入力文字のうちの1つ(すなわちリターン文字)が実行コマンドと間違われる可能性がある。
同様に、障害のある状態(例えば、上記の例では、リターン文字が入力文字の前に受信されること)がない場合であっても、入力文字が、他のコマンド、および/または現在実行されているコマンドの制御と間違われる状況が存在する。言い換えれば、文字単位の入力は必ずしも文字単位のコマンドおよび制御ストリームから分離されるわけではないので、コマンドまたは制御ストリングと類似の文字ストリングを伴う入力がそのような機能と間違われる可能性がある。例えば、ある文字ストリングが終了コマンドシーケンス(例えばCtrl^X、Ctrl^Cなど)と同じである入力ストリングに対してコマンドが実行中である場合、処理が誤って停止される可能性がある。もちろん、間違われた入力ストリングに応じて、他のコマンドまたは制御オペレーションが、ファイルの再配置または名前変更、ファイルの削除または除去、システム全体のシャットダウン、あるいは他の有害なオペレーションなどのより問題の多い応答を引き起こす可能性がある。
さらに、シェルプロセスをリモートに操作するための現在の文字単位のプロトコルに伴う他の問題は、(1)誤りがコマンドの処理の初期に認識されないこと、および(2)こうしたシステムが通常はプラットフォーム不問または言語不問であることである。より具体的には、クライアントは単にキーボードの拡張として働くので、そのようなクライアントは通常、コマンドが正規のものであるかどうか、コマンドが実行されるかどうか、いつ実行されるか、かつ/またはどのタイプのオペレーティング・システムまたは構文がシェルプロセスで使用されるかを認識しない。したがって、間違われたコマンドまたは入力がネットワークワイヤを介して送信され、処理サイクルの初期には認識されない。さらに、ユーザは、リモート・シェルで使用される特定のタイプのプロトコル(例えばUNIX(登録商標)シェル、SSHなど)に基づく文字使用法を知って、それを調節する必要がある。
したがって、現在のコマンドライン・シェル・プロトコルの上記およびその他の欠点および不備が、効率問題、相互運用性問題、および他の様々な問題を引き起こす。
現在のリモート・コマンドライン機構の上記で識別される不備および欠点が、本発明の例示的実施形態によって克服される。例えば、本明細書に記載の実施形態は、バイナリまたは文字指向のデータのストリームではなく、メッセージ内でバインディング機構を提供することによってコマンドライン・シェル処理セッションを確立することを実現する。この概要は、以下の詳細な説明でさらに説明する単純な形式の概念の抜粋を導入するために与えられることに留意されたい。この概要は、特許請求される主題の主要な特徴または不可欠な特徴を識別するためのものではなく、特許請求される主題の範囲を決定する助けとして使用するためのものでもない。
例示的一実施形態によれば、コマンドラインを実行するリモート・コンピューティング・システムで、シェルをオープンする要求メッセージがリモート・コマンドライン・プロセッサで受信される。次いで、バインディング機構が、実行のためにコマンドをシェルに転送する際に使用するために提供される。その後で、コマンドを実行する実行要求メッセージが受信され、実行要求メッセージは、1単位としてのコマンドとバインディング機構とを含む。
ネットワークコンピューティング環境内のクライアント装置での類似の例示的実施形態は、データのバイナリ・ストリームではなく、メッセージを使用して一連のコマンドをリモート・シェルにバインドするバインディング機構を使用することにより、コマンドのためのリモート処理セッションを確立することも実現する。この実施形態では、リモート・コマンドライン・プロセッサでシェルをオープンする要求メッセージが送信される。その後で、バインディング機構が、実行のためにシェルにコマンドを転送する際に使用するために受信される。さらに、コマンドを実行するために実行要求メッセージが送信され、実行要求メッセージは、1単位としてのコマンドと、バインディング機構とを含む。
本発明の追加の特徴および利点が以下の説明で述べられ、部分的には、その説明から明らかとなり、または本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で具体的に指摘される手段および組合せによって実現し、得ることができる。本発明のこうした特徴およびその他の特徴は、以下の説明および添付の特許請求の範囲からより完全に明らかとなり、または以下で述べるように本発明の実施を実施することによって知ることができる。
本発明の上記で列挙した利点および特徴ならびに他の利点および特徴を得ることができる方式を説明するために、上記で簡潔に説明した本発明のより具体的な説明が、添付の図面に示される本発明の特定の実施形態を参照することによって与えられる。こうした図面は本発明の典型的な実施形態を示すに過ぎず、したがって本発明の範囲を限定するものとみなすべきでないことを理解して、添付の図面を使用することによって本発明をさらに具体的かつ詳細に説明する。
本発明は、(1)文字指向伝送ではなく、構造化アトミック単位としてコマンドを送達し、(2)シェル存続時間を一連のコマンドとしてモデル化し、(3)文字ではなく、特別なタイプのメッセージとしてシェル・オペレーション・フローを変更する非同期制御信号をモデル化し、(4)専用入力および出力メッセージのストリームとしてクライアントとリモート・シェルとの間のデータ交換をモデル化し、すなわちコマンドと入力/出力ストリームを混合しない方法、システム、およびコンピュータプログラム製品に及ぶ。本発明の実施形態は、以下でより詳細に論じるように、様々なコンピュータハードウェアまたはモジュールを含む専用コンピュータまたは汎用コンピュータを含むことができる。
本明細書に記載の実施形態は、シェルがコマンドを文字の単位として実行するという原理に基づく。したがって、本明細書の実施形態は、ネットワークオペレーションを行う前に、各コマンドを分離し、各コマンドを検査し、あるレベルの検証を実施し、コマンドの構造化表現をリモート・プロセッサに送達するのに十分な知能を備える送信側を提供する。より具体的には、本明細書の実施形態は、コマンドを識別し、コマンドを単一メッセージ(例えばSOAP、HTTPS、または他のタイプメッセージ)にカプセル化し、次いで単一メッセージがリモート・シェルに送信されて全体の単位として処理される機構を提供する。したがって、本明細書の実施形態は、文字指向伝送ではなく、単一の単位としてコマンドを扱う。
他の実施形態は、ユーザ入力(それが存在する場合)がコマンドを実行するための追加の情報であるが、コマンド自体とは異なる意味(semantics)を有することも考慮する。したがって、本明細書の実施形態は、そのようなユーザ提供データを1つまたは複数の入力ストリームとして扱う。同様に、実施形態は、コマンドが通常の出力とステータスまたはエラーコードとを共に放出することをさらに企図する。したがって、実施形態は、こうしたデータを出力ストリームとして扱う。あるコマンドの出力を次の入力となるように連鎖させることができるので、入力ストリームと出力ストリームとを共に指定し、それらをコマンドから分離しておくための正式な機構が本明細書で説明される。
コマンドをストリームから分離し、文字指向伝送を除去するこの2部モデルを説明する上記およびその他の実施形態は、いくつかの利点を有する。まず、ネットワークの使用がより効率的となる。ネットワークカードに関する伝送の最小単位は一般に512オクテット以上であるので、文字指向プロトコルでは、コマンドを組み立てる際に使用される各文字は、ネットワークパケット全体を必要とする。本明細書に記載のモデルでは、コマンドを実行する時間となった後に、実際には1つのメッセージだけが送達される。
コマンドが分離した単位であり、コマンドを実行することを試みる前に、その全体を検査することができ、アクセスおよび有効性制御リストと突き合わせてチェックすることができるので、コマンドのセキュリティおよび正確さも改善される。言い換えれば、ネットワークの送信側で一定レベルのセキュリティおよび検証を実施することができ、したがってエラーを処理サイクルの初期に認識することができる。
さらに、コマンドを単位に分離することにより、コマンドがどのようにプロセッサに送達されるかについての区別が不要になり、したがってシステム・プラットフォーム不問および言語不問となる。例えば、SOAPを使用して、またはHTTP要求としてコマンドを符号化して、異なるオペレーティング・システムでのシェル・プロセッサの基本的な違いからコマンドを分離することができる。一方、文字指向プロトコルは、オペレーティング・システムの挙動を直接反映し、したがって、ユーザは、リモート・シェルで使用される言語または構文を理解することが求められる。
さらに別の実施形態は、シェル・オペレーション・フローを変更する、ある特殊なケースの非同期制御信号を提供する。例えば、ユーザが進行中のコマンドの早期終了を望む場合、一般にあるタイプの「コントロール・ブレーク(control-break)」または他の文字ストリングがコマンドシェル内に存在している。したがって、本明細書に記載の実施形態は、この制御信号および他の制御信号を、入力ストリーム中の特殊文字ではなく、専用メッセージとしてモデル化する。
有利な特徴に対するより具体的な参照が、図に関してより詳細に以下で説明されるが、本発明の範囲内の実施形態は、コンピュータ実行可能命令またはデータ構造を担持し、またはそれが格納されたコンピュータ可読媒体も含む。そのようなコンピュータ可読媒体は、汎用コンピュータまたは専用コンピュータでアクセスすることのできる入手可能などんな媒体でもよい。例えば、限定はしないが、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROM、または他の光ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶装置、あるいはコンピュータ実行可能命令またはデータ構造の形の所望のプログラムコード手段を担持または格納するのに使用することができ、汎用コンピュータまたは専用コンピュータでアクセスすることのできる任意の他の媒体を含むことができる。情報がネットワークまたは別の通信接続(ハードワイヤード、ワイヤレス、あるいはハードワイヤードまたはワイヤレスの組合せ)を介してコンピュータに転送または提供されるとき、コンピュータは適切に、接続をコンピュータ可読媒体と見る。したがって、そのような任意の接続は、正当に、コンピュータ可読媒体と呼ばれる。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
コンピュータ実行可能命令は、例えば、一定の機能または機能のグループを汎用コンピュータ、専用コンピュータ、または専用処理装置に実行させる命令およびデータを含む。構造的特徴および/または方法論的動作に特有の術語で主題が説明されているが、「添付の特許請求の範囲」で定義される主題は必ずしも上述の特定の特徴または動作に限定されないことを理解されたい。むしろ、上述の特定の特徴および動作は、特許請求の範囲を実施するための例示的形態として開示される。
本明細書では、「モジュール」または「コンポーネント」という用語は、コンピューティングシステム上で実行されるソフトウェア・オブジェクトまたはルーチンを指すことがある。本明細書に記載の様々なコンポーネント、モジュール、エンジン、およびサービスを、コンピューティングシステム上で実行されるオブジェクトまたはプロセスとして(例えば別々のスレッドとして)実装することができる。本明細書に記載のシステムおよび方法は、ソフトウェアで実装されることが好ましいが、ハードウェアまたはソフトウェアとハードウェアの組合せでの実装も可能であり、企図される。この説明では、「コンピューティング・エンティティ」は、本明細書で先に定義された任意のコンピューティングシステムでよく、またはコンピューティングシステム上で動作する任意のモジュールまたはモジュレートの組合せでよい。
図1は、例示的実施形態による、リモート・コマンドライン・シェル処理のためにメッセージ・プロトコル・ハンドラを使用するように構成されたネットワークを示す。図示されるように、クライアント105は、ユーザがキーボードまたは類似のインターフェースを使用してコマンドを入力することを可能にするコマンドライン・インターフェース115を含む。例示的実施形態によれば、次いでそのようなコマンドを、メッセージ・プロトコル・ハンドラ125で評価および処理することができる。言い換えれば、メッセージ・プロトコル・ハンドラ125は、コマンドを分離し、それを検査し、以下でより詳細に説明される様々なレベルの検証および他のオペレーションを実施することのできる解釈機構(interpretation mechanism)を定義する。次いで、こうしたコマンドがメッセージ(例えばSOAP、HTTPSなど)内にカプセル化され、ネットワーク100を介してリモート110側に転送され、メッセージ・プロトコル・ハンドラ130がメッセージを処理し、さらに処理するためにコマンドライン・シェル・プロセッサ120にコマンドを渡す。
メッセージ・プロトコル・ハンドラ125の使用により、コマンドをプラットフォーム不問および言語不問の形で処理することが可能となることに留意されたい。具体的には、クライアント105側のメッセージ・プロトコル・ハンドラ125が、コマンドに関して使用される特定のタイプの構文に無関係であるメッセージ内にコマンドをカプセル化するように構成される。同様に、リモート110側のメッセージ・プロトコル・ハンドラ130は、シェル・プロセッサ120に関する構文とは無関係に書かれたコマンドを評価することができるが、依然として、使用されるオペレーティング・システムまたは実装される特定の言語のタイプの如何に関わらず、シェル・プロセッサ120がコマンドを処理することを可能にする。言い換えれば、メッセージ・プロトコル・ハンドラ125、130は、コマンドをメッセージ自体の中で定義された独立の形式に変換し、またはその独立の形式からコマンドを変換する。
言い換えれば、こうした実施形態の一態様は、リモート・プロセッサ120のプラットフォーム特有の特性が、プラットフォーム境界にわたって一様であるメッセージモデルの下に隠されることである。シェル存続時間(以下でより詳細に説明する)およびメッセージ(例えばSOAP)下のコマンドの実行をモデル化することにより、シェル120プロセッサでの本質的かつ厄介な違いが隠される。
プラットフォーム不問および言語不問の形でコマンドを提供するために上記のハンドラ125、130を使用するものとして以下の実施形態を説明することができるが、そのような変換は、そのような実施形態を使用するのには必要ではないことに留意されたい。さらに、本明細書に記載の実施形態が一般にはネットワーク環境内のクライアントとリモート・シェル・プロセッサとの間で実装されるが、実施形態の一部をローカルマシンにも適用できることにも留意されたい。本明細書に記載の実施形態を実施およびモデル化するための任意の数のモジュールおよび構成も企図されることにも留意されたい。したがって、本明細書に記載の実施形態を実装するための、特定の符号化フォーマット、言語構文またはオペレーティング・システム、設計レイアウトの特定の使用、あるいはリモートまたは他の特定のシェルモジュールの使用はどれも例示的なものに過ぎず、具体的に主張されるのでない限り、本明細書の実施形態の範囲を限定あるいは狭めることを意味するものではない。
使用されるコンピューティングシステムのタイプの如何に関わらず、図1Bに示されるように、クライアント105がコマンド処理のためにシェル120をオープンしたいとき、実施形態は、コマンドシェル・プロセッサをオープンする概念を直接モデル化する構造化オープン・シェル・メッセージ135を発行することを可能にする。したがって、この実施形態は、オペレーティング・システム環境内でローカルに「コマンド・ウィンドウ」を開く動作を模倣する。次いで、メッセージ135をリモートマシン110に送達することができ、リモートマシン110は、「現実の」シェル120をローカルにオープンし、その入力および出力をリモートセッションに接続する。この初期メッセージ135は通常、シェル120に関する環境変数、デフォルト・ディレクトリ(図示せず)、および他の初期化を実施する(例えば、デフォルト変数を上書きし、コマンド挙動を制御するために新しい変数を追加するなど)ことのできる所である。
この実施形態および本明細書に記載の他の実施形態では、シェル・プロセッサ120で行われる処理は、そのような処理の実際の実装の挙動を模倣する仮想プロセスでよいことに留意されたい。言い換えれば、行われるオペレーションは、特定のシェル・プロセッサ120で生じるように見えることがある。しかし、他のモジュールまたはコンポーネントは、以下でより詳細に説明するように、コマンドを処理し、または信号制御を実施するそのような挙動を模倣する。したがって、本明細書で説明され、主張されるシェル・プロセッサ120またはその挙動に対するどんな参照も、実際のシェル・プロセッサの代わりに、または実際のシェル・プロセッサと同様に働く仮想マシンを含むように広く解釈すべきである。
シェル・プロセッサ120側で(例えばサーバ側の実装で)、シェル120のオープンを確認するためにオープン・シェル応答メッセージ140をクライアント105に送り戻すことができる。一実施形態では、シェル120を識別する識別子142またはトークンをメッセージ140に添付することができることに留意されたい(例えば、図示する例では、シェルID=123)。したがって、以下でより詳細に説明するように、バインディング機構142の使用(すなわち識別子142またはシェルトークン)をセッションの存続時間全体にわたって使用することができる。これにより、シェル・プロセッサ120セッション(その存続時間)を、一連の文字ではなく、一連のコマンドとしてモデル化することが可能となることに留意されたい。さらに、この機構は、いくつかのシェル120セッションをオープンすることも可能にし、それによって複数のコマンドシリーズの同時処理が可能となることに留意されたい。さらに、シェル・セッションに関するバインディング機構(すなわち識別子142またはシェルトークン)がメッセージ内で送信されるので、現在のシェル・セッションのバイナリまたは文字単位の確立に関連する問題が克服されることに留意されたい。
それでも、本明細書に記載のいくつかの実施形態は、本明細書に記載のセッション・バインディング142機構またはモデル化を必ずしも必要としないことに留意されたい。例えば、単一のセッションまたはシェルプロセス120のみが確立される場合、シェルID142またはトークンの使用は不要であることがある。したがって、セッションを確立するためのシェル識別子またはトークンの使用は、本明細書では例示のために使用されるに過ぎず、明示的に主張されるのでない限り、本明細書に記載の実施形態の範囲を制限することを意味するわけではない。
セッションを作成または確立するのにシェル識別子142が使用されるか否かに関わらず、図1Cに示されるように、実施形態は、コマンドシェル・プロセッサ120にコマンドを発行するとき、クライアント105アプリケーションが、コマンドの名前、その切替え、および首尾よく実行するために必要な他の情報を含む完全なコマンドライン単位147を送信側で構成することができることを実現する。言い換えれば、前述のように、本明細書の実施形態は、コマンド147を識別し、それを検査し、それに対して何らかの検証および他の高レベル処理を実施し(例えば、アクセスまたは検証制御リストと突き合わせて比較する)、コマンド147単位を実行コマンド・メッセージ145としてカプセル化し、処理のためにコマンド147をシェル・プロセッサ120に送信する。したがって、本明細書の実施形態は、文字指向伝送モデルに依拠するコマンドシェル・プロトコルの既存の実装ではなく、メッセージ指向プロトコルを使用してコマンド147を構造化アトミック単位として送達する。
ここで示されるコマンドは単一の「コピー」コマンドであることに留意されたい。しかし、他のタイプのコマンド、さらにはコマンドの組合せをメッセージに含めることができる。例えば、実行コマンド・メッセージ145は、あるコマンドの出力が他のコマンドの入力にパイプされる複数のコマンド147を含むことができる。しかし、通常は、1つのコマンドだけが単一のメッセージ内に含まれる。1つまたは複数のコマンドがメッセージ145内に含まれるかどうかの如何に関わらず、コマンドを全体の単位として表現すべきであり、すなわち、コマンドは、コマンド147の部分的表現のみを含むべきではない。したがって、メッセージ145内の任意の特定のタイプまたは任意の数のコマンド147は例示のために本明細書で説明した過ぎず、明示的に主張されるのでない限り、実施形態の範囲を限定し、または狭めるべきではない。
さらに、実行コマンド・メッセージ145(ならびに本明細書に記載の他のメッセージ)は、任意のタイプの周知のフォーマット、例えばHTML(HyperText Markup Language)、XML(eXtensible Markup Language)などでよいことに留意されたい。さらに、コマンド147(および本明細書に記載の他の要素)をメッセージの任意の部分、例えばヘッダ、本文、または他のフィールドに配置することができる。シェルのセッションまたは存続時間が識別子またはトークン142を使用して確立される場合、実行コマンド・メッセージ145は、どのシェル120がオペレーションを実行すべきかを識別するトークン142も含むべきであることにも留意されたい。
実行コマンド・メッセージ145に応答して、通常はシェル・プロセッサ120が実行応答メッセージ150を発行する。以下でより詳細に説明するように、実行応答メッセージ150は、メッセージ出力の一部でよいことに留意されたい。例えば、実行応答メッセージ150は単に、ステータスコード、エラー、またはコマンド147が実行され、または実行されなかったかを示す他の確認メッセージでよい。以下でより詳細に説明するように、実行応答150は、コマンド147に対する特定の入力および出力を識別またはバインドするなどの事柄に使用することのできるコマンド識別子またはトークン152(この例ではコマンドID 456として示す)を含むことができる。
しかし、シェル識別子と同様に、コマンドトークン152は本明細書に記載のいくつかの実施形態に対しては不要であることに留意されたい。例えば、複数のコマンド147がセッション内で実行されていない場合、かつ/または入力/出力が生成されない場合、そのようなコマンド識別子152は不要であることがある。さらに、実行応答150も、必要に応じて、前述のように、シェル識別子142を含むことがあり、または含まないことがあることにも留意されたい。
それでも、図1Dに示されるように、大部分のコマンドは、出力、および最終的には何らかの種類の最終ステータス(例えばステータスコード、エラーコード、または前述の他の確認メッセージ)を放出するので、クライアント105は、コマンド147の実行によって生成されたどんな出力160の抽出も開始すべきである。一実施形態によれば、このプロセスは図示するようにループとして行われ、出力160の1つまたは複数のストリーム(例えば標準出力ストリーム、標準エラーストリーム、または他の出力ストリーム)がクライアント105によって受信され、読取り出力メッセージ155を使用して確認される。
通常、クライアント105は、コマンド147の実行によって放出される任意のストリーム(例えばストリーム「A」、「B」、「C」など)に関する出力160がなくなるまで、上述のループを反復し続ける。一実施形態では、コマンド147によって放出される各ストリーム(例えばストリーム「A」、「B」、「C」など)の出力160がメッセージブロック160内で分離される。ある時点で、ストリーム「C」にあるように、通常はend−of−streamマーカが存在し、クライアント105がそのストリームについてそれ以上の出力を取得しないことを意味する(出力内のすべてのストリームおよび/またはそのようなストリームまたは任意選択に対する終了を示すのにend−of−streamマーカを使用でき、それによってコマンドが終了した場合、例えば応答で終了コードを返す場合にストリームに終了を示唆することができることに留意されたい)。最終的に、コマンド147の処理に関係するすべてのストリームがend−of−streamマーカを放出することになり、end−of−commandマーカが応答メッセージ160内に現れる。さらに、実施形態は、クライアント105に出力することのできるストリームのタイプの構成を可能にし、例えばストリーム「A」を真にセットし、ストリーム「B」を偽にセットすることができることに留意されたい。
コマンド147がその出力160を放出することによって終了すると、クライアント105は、前述のように別のコマンド147を発行することができる。それでも、前述のように、ある実施形態は、複数のコマンド147が同一のシェル120インスタンスに対して、場合によっては複数のシェル120セッションに対して同時に実行されることも可能にする。
各出力文字を通信するための複数のラウンドトリップ(round trip)の代わりに、出力160が文字のチャンク(塊、chunk)として取り出されることに留意されたい。したがって、所与の応答160は、典型的なコマンドシェル・プロトコルの文字指向伝送とは対照的に、1つまたは多数のストリームに関する大量のデータを有することができる。したがって、表示および他の用途のために出力160がより効率的に受信および処理される。さらに、前述のように、通常は、必要ならば、出力メッセージ160は、シェル識別子142および/またはコマンド識別子152を含むべきであることに留意されたい。そのような場合、複数のシェル120セッションでコマンド147の複数の実行に対する複数の出力をクライアント105は受信していることがあり、シェル・プロセッサ120はそれを生成していることがある。さらに、以下でより詳細に説明するように、そのような出力160ストリームを生成されたレートで動的に調節し、様々な考慮すべき点に基づいて、かつ受信された入力に対して送信することができる。
前述のように、あるコマンド147は入力も必要とすることがある。そのような場合、図1Eに示されるように、本明細書の実施形態は、コマンド実行メッセージ145(すなわちコマンド147)がシェル・プロセッサ120に送信された後に入力ストリーム165をコマンド147に「供給」することを可能にする(しかし、コマンドおよび入力を依然として別々に保つことができると共に識別可能であるとき、例えばヘッダ内にコマンドがあり、本文内に入力があるSOAPメッセージなどで、ある実施形態は入力もコマンド実行メッセージ147に含めることを可能にすることに留意されたい)。コマンド識別子またはトークン152が使用される場合、入力は通常、コマンドID152が認識された後に送信される。さらに、シェル識別子142が使用される場合、適切なシェル120セッションを識別するためにそのような識別子142が入力165内に含まれるべきである。上述の出力ストリーム160と同様に、入力165のストリーミングは、任意のストリーム(例えばストリーム「A」、「B」、「C」など)に対するコマンド147に供給される入力データがなくなるまで、ループ型で行われる。言い換えれば、シェル・プロセッサ120に首尾よく送達された書込み入力メッセージ165内の入力データのストリームに関して、確認メッセージ170がクライアント105によって受信され、クライアント105は、すべての入力が受信されたと確認されるまで(170)、入力165をシェル・プロセッサ120に継続的にストリーミングする。さらに、実施形態は、入力される可能性のあるストリームのタイプを構成することを可能にし、例えばストリーム「A」を真にセットし、ストリーム「B」を偽にセットすることができる。
出力ストリーム160と同様に、各入力を文字単位で通信するのではなく、入力が文字のチャンクとして送信されることに留意されたい。したがって、所与の書込み入力メッセージ165は、典型的なコマンドシェル・プロトコルの文字指向伝送とは対照的に、1つまたは多数のストリームに関する大量のデータを有することができる。したがって、入力がより効率的に受信および処理される。さらに、前述のように、必要ならば、入力メッセージ165は、シェル識別子142および/またはコマンド識別子152を含むべきであることに留意されたい。そのような場合、シェル・プロセッサ120は、複数のシェル120セッションで複数のコマンド147に対する複数の入力を処理していることがある。
読取り出力メッセージ155と共に既に上記で説明したように、他の実施形態は、出力160を抽出するために入力165の処理が非同期かつ同時に行われることを可能にする。したがって、あるコマンド147が出力160を生成するよりも高速/低速なレートで入力165を要求することがあるので、本明細書の実施形態は、それに応じて入力出力レートを静的または動的に調節することができる。言い換えれば、入力165メッセージフローと出力160メッセージフローとの間にインピーダンス不整合が存在することがある。さらに、タイムアウト問題、帯域幅問題、好ましいストリームなどの任意の数の問題に基づいてフローを静的または動的に調節することができる。さらに、ヒントメッセージ、構成設定、または任意の他の周知の機構に基づいて入力165または出力160のフローを調節することができる。
さらに別の他の実施形態は、シェル120オペレーションフローのフローを非同期に制御または変更するための特別なメッセージの使用を可能にする。例えば、図1Fに示されるように、信号メッセージ175を使用して、コマンドの実行を終了、停止、再開、あるいは修正することができる。言い換えれば、ユーザがコマンド147の実行状態を変更したい場合、クライアント105は、信号メッセージ175を作成して、そのようなメッセージをシェル・プロセッサ120に送信することができ、シェル・プロセッサ120は、望み通りに適切な処置を取る。制御または信号コマンドを離散的メッセージ175としてモデル化することにより(ならびに本明細書でモデル化され、説明される他の実施形態)、そのようなコマンドは、文字単位伝送を使用するプロトコルについて先に述べたように、コマンドに対して誤って実行されない。
本明細書に記載の他のプロセスと同様に、コマンド147の状態を示す信号応答メッセージ180をクライアントに返すことができる。そのような応答メッセージ180は、コマンド147のステータス、望まれる修正または変更のタイプ175(例えば、そのような修正が正規のものである否か)などの事柄に基づくエラーまたは他のタイプの確認メッセージ180でよいことに留意されたい。コマンド識別子142および/またはセッション識別子152が使用される場合、信号メッセージ175および応答152は通常、適切な処理のために適切なトークンを含むべきであることにも留意されたい。信号識別子(および本明細書に記載の他の識別子)をメッセージの任意の部分に含めることができ、それがコードとして現れることができ、特定のフィールド内のフラグでよく、または他の同様の周知の方式で識別することができる。
クライアント105がシェル120をもはや必要としないとき、図1Gに示されるように、実施形態は、クローズ・シェル・メッセージ185を送信することによってシェルのクローズも可能にする。前述のようにセッションが確立される場合、クローズ・シェル・メッセージ185はシェル識別子142(Shell ID=123として示す)を含むべきである。いずれにしても、シェル・プロセッサ120がシェル185をクローズする要求を受信したとき、当然ながらエラーが生じなかったことを条件として、シェル・セッション120は終了し、適切な状態またはクローズシェル応答190をクライアント105に返すことができる。
上記の実施形態では、識別されるメッセージの様々な部分を、任意の周知のuniform resource identifier(uri)を使用して表すことができる。例えば、任意の周知のuriを使用して、コマンド147、オープン/クローズセッション、シェル識別子142、コマンドトークン152、信号識別子(例えば終了、停止、再開など)、およびメッセージの他の部分を識別することができる。したがって、この実施形態は、シェルプロセス内のコマンドラインを実行する際に使用される任意の特定のプラットフォームまたは構文からの別の層の抽象化を可能にする。
本発明は、機能的ステップおよび/または非機能的動作を含む方法として説明することもできる。以下は、本発明を実施する際に実施することのできるステップおよび/または動作の説明である。通常、機能的ステップは、実施される結果の点で本発明を記述するのに対して、非機能的動作は、特定の結果を達成するためのより具体的動作を記述する。機能的ステップおよび/または非機能的動作を特定の順序で記述または主張することがあるが、本発明は、何らかの特定の順序あるいはステップおよび/または動作の組合せに必ずしも限定されない。さらに、請求項の列挙でのステップおよび/または動作の使用は、そのような用語の所望の特定の使用を示すのに使用される。
図2に、本発明の様々な例示的実施形態に関する流れ図を示す。図2の以下の説明は、図1A〜Gの対応する要素を時折参照する。これらの図の特定の要素に参照を行うことがあるが、そのような参照は、例示のために使用されるに過ぎず、明示的に主張されるのでない限り、記載の実施形態の範囲を限定し、または狭めることを意味するものではない。
図2は、例示的実施形態による、リモート・シェルでコマンドラインを実行する際に使用されるプロトコルについての流れ図である。図2の流れ図は、流れ図の中の深さ、および流れ図のどちらの側を説明しているか、すなわちクライアント210か、それともコマンドライン・シェル・プロセッサ220かなどの事柄に応じて、複数の方法(例えば200、205)に関する説明を含むことに留意されたい。したがって、流れ図の以下の説明は、何らかの特定の方法を対象とすることを意味するわけではなく、以下のうちの1つまたは複数を実施するのに使用される実施形態を一般的に説明するのに使用される。(1)文字指向伝送ではなく、構造化アトミック単位としてコマンドを送達すること、(2)シェル存続時間を一連のコマンドとしてモデル化すること、(3)文字ではなく、特別なタイプのメッセージとしてシェル・オペレーション・フローを変更する非同期制御信号をモデル化すること、および(4)専用入力および出力メッセージのストリームとして、すなわちコマンドと入力/出力ストリームを混合せずに、クライアントとリモート・シェルとの間のデータ交換をモデル化すること。
実施形態は、シェルをオープンする要求を送信/受信する(215/225)ことを実現する。例えば、クライアント105は、オープン・シェル要求メッセージ135をシェル・プロセッサ120に送信することができる。セッションを確立すべきである場合、上述のように、実施形態は、シェル識別子を送信/受信する(235/230)ことを実現する。より具体的には、オープン・シェル・メッセージ135の受信時に、シェル・プロセッサは、前述のように、シェルトークンまたは識別子142を含むオープン・シェル応答140を送信することができる。その後に、クライアント側210は、コマンドライン・シェル・プロセッサ220でリモートに実行すべきコマンドを識別し(240)、コマンドをメッセージに添付する(245)。例えば、クライアント105は、コマンド147を識別することができ、シェル・プロセッサ120に送信するためにコマンド147を実行コマンド・メッセージ145内に含めることができ、シェル・プロセッサ120は通常はクライアント105から離れている。シェル・セッションが確立される場合、実行コマンド・メッセージ145はシェル識別子142を含むべきであることに留意されたい。
コマンドラインプロセッサ側220はメッセージ145を受信し(225)、次いで実行のためにコマンド147を識別することができる(260)。その後で、コマンド識別子が使用される場合、シェル・プロセッサ120は、そのような識別子142をクライアント105に送信することができ(265)、クライアント105は、本明細書で説明したように、入力を送信するため、またはコマンド147の実行を制御するためにそのような識別子142を受信する(270)。前述のように、例示的実施形態によれば、複数のコマンド147実行が単一のセッションで可能であるかどうか、入力/出力が必要であるか否かなどの事柄に応じて、コマンド識別子152が必要なことがあり、または不要なことがある。例えば、コマンド165を実行するための書込み入力165が必要である場合、コマンド識別子152(および、場合によっては、さらにシェル識別子142)をストリーミングされる入力165内に含めることができ、それがシェル・プロセッサ120によって送信/受信される(275/280)。受信された入力に対する確認285(例えばエラーコードなど、170)を送信すべきであり(275)、このプロセスが、入力ストリーム165のすべてがシェル・プロセッサ120によって送信/受信されるまでループする。
コマンド147およびストリーミングされた入力165(それが存在する場合)が適切に受信されると、コマンドライン・シェル・プロセッサ側220は、コマンド147を適切に実行することができる(290)。したがって、適切な確認をコマンドライン・シェル・プロセッサ220に送信する(214)と共に、出力165をクライアント105に送信し(295)、クライアント105で受信することができる(202)。入力ストリーム165と同様に、すべての出力160がクライアント105によって受信され/クライアント105に送信されるまで、出力ループを続行すべきである。
上述のように、入力265ストリームおよび出力260ストリームを、クライアント105とシェル・プロセッサ120との間で非同期かつ同時に送信/受信することができる。さらに、無数の因子に基づいて、かつ多数の方式で、そのようなフローを静的または動的に調節することができる。例えばフローは、特定のコマンド147に対する一定量の出力160を生成するのに必要な入力165の量に基づくことができ、かつ/または帯域幅または他の制限に基づくことができる。さらに、ヒントメッセージ、制御設定、または他の周知の機構を介してフローを制御することができる。
ユーザがセッションを終了すると、シェル185をクローズする要求をコマンドライン・シェル・プロセッサ側220に送信し(204)/コマンドライン・シェル・プロセッサ側220で受信することができ(208)、シェル120セッションが終了したことをクライアント105に通知する確認190をクライアント側210に送信することができる(212)。他の実施形態は、コマンド147の状態または処理を変更するために信号メッセージ175(例えば終了、停止、再開など)の配布を可能することにも留意されたい。本明細書に記載の他の大部分のメッセージと同じく、信号応答180を使用してそのような制御メッセージ175を確認する(またはエラーを引き起こす)ことができる。
本発明の精神または不可欠な特徴から逸脱することなく、他の特定の形態で本発明を実施することができる。記載の実施形態は、すべての点で例示的なものに過ぎず、限定的なものではないものとして理解すべきである。したがって、本発明の範囲は、上記の説明ではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等の意味および範囲内にあるすべての変更は、その範囲内に包含されるべきである。
例示的実施形態による、リモート・コマンドライン・シェル処理のためにメッセージ・プロトコル・ハンドラを使用するネットワークを示す図である。 例示的実施形態による、コマンド・セッションを確立するためのオープン・メッセージおよびリターン・シェル識別子の使用を示す図である。 例示的実施形態による、メッセージを使用して、実行のためにシェル・プロセッサにコマンド単位を送信することを示す図である。 例示的実施形態による、実行されるコマンドに関する出力のストリーミングを示す図である。 例示的実施形態による、コマンド・メッセージからの入力ストリームメッセージの分離を示す図である。 例示的実施形態による、シェル・セッションに関する制御オペレーションを送信するためのメッセージの使用を示す図である。 例示的実施形態による、コマンド・セッションを終了するためのクローズ・メッセージの使用を示す図である。 例示的実施形態による、リモート・シェルでコマンドラインを実行する際に使用されるプロトコルに関する流れ図を示す図である。

Claims (20)

  1. ネットワークコンピューティング環境内のリモート装置で、一連のコマンドをシェルにバインドするために、データのバイナリ・ストリームではなく、メッセージ内にバインディング機構を提供することによってコマンドライン・シェル処理セッションを確立する方法であって、
    リモート・コマンドライン・プロセッサでシェルをオープンする要求メッセージを受信するステップと、
    実行のためにコマンドを前記シェルに転送する際に使用されるバインディング機構を提供するステップと、
    実行要求メッセージを受信してコマンドを実行するステップであって、前記実行要求メッセージは、1単位としての前記コマンドと前記バインディング機構とを含む、ステップと
    を備えることを特徴とする方法。
  2. 前記バインディング機構は、シェル識別子、シェルトークン、またはその両方であることを特徴とする請求項1に記載の方法。
  3. 前記受信した実行要求メッセージに応答して、
    前記コマンドの実行に関係する入力、出力、または他の信号メッセージを識別する際に使用されるコマンド識別子を含む応答メッセージを送信するステップを
    さらに備えることを特徴とする請求項1に記載の方法。
  4. 前記応答メッセージは、前記コマンドの実行のステータスレポートを含むことを特徴とする請求項1に記載の方法。
  5. 前記コマンドは、コマンドライン・シェル・プロセッサでの実行のための入力を必要とし、前記入力は、実行メッセージとは別々のデータの1つまたは複数のストリームとして受信され、前記入力は、前記シェルと前記コマンド識別子とを共に含むことを特徴とする請求項1に記載の方法。
  6. 前記コマンドの実行は出力を生成し、前記出力は、前記シェルと前記コマンド識別子とを共に含むデータの1つまたは複数のストリームとしてクライアントに送信されることを特徴とする請求項1に記載の方法。
  7. シェル・オペレーション・フローを変更するために前記シェルとコマンド識別子とを共に含む1つまたは複数の非同期信号メッセージを受信し、それによって前記コマンドの実行が終了、休止、再開、退出、または遅延する、ステップを
    をさらに備えることを特徴とする請求項1に記載の方法。
  8. 前記コマンドは入力ストリームを必要とし、前記コマンドの実行は出力ストリームを生成し、前記入力ストリームに関するフローのレートが、前記出力ストリームに関するフローのレートに対して動的に調節されることを特徴とする請求項1に記載の方法。
  9. ネットワークコンピューティング環境内のリモート装置で、データのバイナリ・ストリームではなく、メッセージを使用して一連のコマンドをリモート・シェルにバインドするバインディング機構を使用することによってコマンドに関するリモート処理セッションを確立する方法であって、
    リモート・コマンドライン・プロセッサでシェルをオープンする要求メッセージを送信するステップと、
    実行のためにコマンドを前記シェルに転送する際に使用されるバインディング機構を受信するステップと、
    実行要求メッセージを送信してコマンドを実行するステップであって、前記実行要求メッセージは、1単位としての前記コマンドと前記バインディング機構とを含む、ステップと
    を備えることを特徴とする方法。
  10. 前記バインディング機構は、シェル識別子、シェルトークン、またはその両方であることを特徴とする請求項9に記載の方法。
  11. 前記受信した実行要求メッセージに応答して、
    前記コマンドの実行に関係する入力、出力、または他の信号メッセージを識別する際に使用されるコマンド識別子を含む応答メッセージを送信するステップを
    さらに備えることを特徴とする請求項9に記載の方法。
  12. 前記応答メッセージは、前記コマンドの実行のステータスレポートを含むことを特徴とする請求項9に記載の方法。
  13. 前記コマンドは、前記シェルでの実行のための入力を必要とし、前記入力は、実行メッセージとは別々のデータの1つまたは複数のストリームとして送信され、前記入力は、前記シェルと前記コマンド識別子とを共に含むことを特徴とする請求項9に記載の方法。
  14. 前記コマンドの実行は出力を生成し、前記出力は、前記シェルと前記コマンド識別子とを共に含むデータの1つまたは複数のストリームとしてクライアントで受信されることを特徴とする請求項9に記載の方法。
  15. シェル・オペレーション・フローを変更するために前記シェルとコマンド識別子とを共に含む1つまたは複数の非同期信号メッセージを送信し、それによって前記コマンドの実行が終了、休止、再開、または遅延する、ステップを
    さらに備えることを特徴とする請求項9に記載の方法。
  16. 前記コマンドは入力ストリームを必要とし、前記コマンドの実行は出力ストリームを生成し、前記入力ストリームに関するフローのレートが、前記出力ストリームに関するフローのレートに対して動的に調節されることを特徴とする請求項9に記載の方法。
  17. ネットワークコンピューティング環境内のリモート装置で、一連のコマンドをシェルにバインドするために、データのバイナリ・ストリームではなく、メッセージ内にバインディング機構を提供することによってコマンドライン・シェル処理セッションを確立する方法を実施するコンピュータプログラム製品であって、コンピュータ実行可能命令を格納した1つまたは複数のコンピュータ可読媒体を含み、前記コンピュータ実行可能命令は、プロセッサによって実行されたときに、前記リモート装置に、
    リモート・コマンドライン・プロセッサでシェルをオープンする要求メッセージを受信するステップと、
    実行のためにコマンドを前記シェルに転送する際に使用されるバインディング機構を提供するステップと、
    実行要求メッセージを受信してコマンドを実行するステップであって、前記実行要求メッセージは、1単位としての前記コマンドと前記バインディング機構とを含む、ステップと
    を実行させることができることを特徴とするコンピュータプログラム製品。
  18. 前記バインディング機構は、シェル識別子、シェルトークン、またはその両方であることを特徴とする請求項17に記載のコンピュータプログラム製品。
  19. 前記受信した実行要求メッセージに応答して、前記コマンドラインプロセッサに、
    前記コマンドの実行に関係する入力、出力、または他の信号メッセージを識別する際に使用されるコマンド識別子を含む応答メッセージを送信させるステップを
    実行させる実行可能命令をさらに備えることを特徴とする請求項17に記載のコンピュータプログラム製品。
  20. 前記コマンドは、前記コマンドライン・シェル・プロセッサでの実行のための入力を必要とし、前記入力が、実行メッセージとは別々のデータの1つまたは複数のストリームとして受信され、前記入力は、前記シェルと前記コマンド識別子とを共に含むことを特徴とする請求項17に記載のコンピュータプログラム製品。
JP2008555237A 2006-02-16 2007-01-19 シェル・セッション Active JP5022382B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US77395406P 2006-02-16 2006-02-16
US60/773,954 2006-02-16
US11/469,411 US7933964B2 (en) 2006-02-16 2006-08-31 Shell sessions
US11/469,411 2006-08-31
PCT/US2007/001363 WO2007094915A1 (en) 2006-02-16 2007-01-19 Shell sessions

Publications (2)

Publication Number Publication Date
JP2009527054A true JP2009527054A (ja) 2009-07-23
JP5022382B2 JP5022382B2 (ja) 2012-09-12

Family

ID=38370084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008555237A Active JP5022382B2 (ja) 2006-02-16 2007-01-19 シェル・セッション

Country Status (5)

Country Link
US (1) US7933964B2 (ja)
EP (1) EP1989633B1 (ja)
JP (1) JP5022382B2 (ja)
KR (1) KR101292442B1 (ja)
WO (1) WO2007094915A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7933986B2 (en) * 2006-02-16 2011-04-26 Microsoft Corporation Transferring command-lines as a message
US8875148B2 (en) * 2011-06-14 2014-10-28 International Business Machines Corporation Product-specific system resource allocation within a single operating system instance
CN103685399B (zh) * 2012-09-17 2018-03-23 腾讯科技(深圳)有限公司 一种登录类Unix虚拟容器的方法、装置和系统
US11411800B1 (en) * 2021-07-28 2022-08-09 Intuit Inc. High resiliency content delivery network backup mechanism for micro frontend web applications

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146844A (ja) * 1993-04-30 1995-06-06 Texas Instr Inc <Ti> 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法
JPH09231156A (ja) * 1996-02-28 1997-09-05 Nec Corp プログラム受信機能付遠隔実行装置
JP2001125872A (ja) * 1999-10-26 2001-05-11 Nec Corp 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
JP2005508035A (ja) * 2001-11-01 2005-03-24 ヤフー! インコーポレイテッド インターネット・ブラウザを用いてオンライン・ショッピングを簡便化する方法およびシステム
JP2005108188A (ja) * 2003-09-30 2005-04-21 Microsoft Corp リモートデバイスのメディア能力を判定するシステムおよび方法
JP2005129018A (ja) * 2003-09-05 2005-05-19 Groove Networks Inc オペレーション・システム・フォルダー式ファイル・システムにおけるコラボレーション・システムの属性を提供するための方法及び装置
JP2006244471A (ja) * 2005-03-04 2006-09-14 Microsoft Corp コマンドラインデータ型の検出および変換
JP2007518187A (ja) * 2004-01-16 2007-07-05 マイクロソフト コーポレーション リモート境界を横切ってコンピュータ読取り可能オブジェクトを転送するためのシステムおよび方法

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471564A (en) 1992-07-10 1995-11-28 Microsoft Corporation System and method for dynamic printer timeout
US5764228A (en) 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
WO1996031074A1 (en) 1995-03-29 1996-10-03 Ericsson Inc. Console dispatch in an extended multisite radio communications network
GB2313524A (en) * 1996-05-24 1997-11-26 Ibm Providing communications links in a computer network
US7062500B1 (en) 1997-02-25 2006-06-13 Intertrust Technologies Corp. Techniques for defining, using and manipulating rights management data structures
US5991814A (en) * 1997-07-10 1999-11-23 Alcatel Method and apparatus for controlling command line transfer to a network element
US8782199B2 (en) 1997-10-14 2014-07-15 A-Tech Llc Parsing a packet header
US6493447B1 (en) 1997-11-21 2002-12-10 Mci Communications Corporation Contact server for call center for syncronizing simultaneous telephone calls and TCP/IP communications
US6438612B1 (en) 1998-09-11 2002-08-20 Ssh Communications Security, Ltd. Method and arrangement for secure tunneling of data between virtual routers
US6470346B2 (en) 1998-10-07 2002-10-22 Millennium Pharmaceuticals, Inc. Remote computation framework
US6286035B1 (en) 1999-02-01 2001-09-04 Lucent Technologies Inc. Validating and parsing engine for system configuration and support command messages
US6675387B1 (en) 1999-04-06 2004-01-06 Liberate Technologies System and methods for preparing multimedia data using digital video data compression
US6405365B1 (en) 1999-07-02 2002-06-11 Cisco Technology, Inc. Computer program command generator and parser
US6922721B1 (en) 2000-10-17 2005-07-26 The Phonepages Of Sweden Ab Exchange of information in a communication system
US7051032B2 (en) 2000-03-17 2006-05-23 International Business Machines Corporation System and method for providing post HOC access to legacy applications and data
US7222147B1 (en) 2000-05-20 2007-05-22 Ciena Corporation Processing network management data in accordance with metadata files
US7047526B1 (en) 2000-06-28 2006-05-16 Cisco Technology, Inc. Generic command interface for multiple executable routines
US20020107951A1 (en) 2000-09-11 2002-08-08 William Teague Report group management
US6721808B1 (en) 2000-09-13 2004-04-13 Cisco Technology, Inc. Real-time creation of distributed object shell commands
US7069507B1 (en) 2000-09-29 2006-06-27 Microsoft Corporation Event routing model for an extensible editor
US20020087744A1 (en) * 2000-11-01 2002-07-04 Aeroflex Altair Cybernetics Corporation Information transformation software engine
US6981031B2 (en) 2000-12-15 2005-12-27 International Business Machines Corporation Language independent message management for multi-node application systems
US7596791B2 (en) 2000-12-19 2009-09-29 Emc Corporation Methods and techniques for delivering rich Java applications over thin-wire connections with high performance and scalability
GB0031206D0 (en) 2000-12-21 2001-01-31 Ibm Multi-platform command line interpretation
US7546527B2 (en) 2001-03-06 2009-06-09 International Business Machines Corporation Method and apparatus for repurposing formatted content
US7072908B2 (en) 2001-03-26 2006-07-04 Microsoft Corporation Methods and systems for synchronizing visualizations with audio streams
US7516208B1 (en) 2001-07-20 2009-04-07 International Business Machines Corporation Event database management method and system for network event reporting system
US7266616B1 (en) 2001-08-08 2007-09-04 Pasternak Solutions Llc Method and system for digital rendering over a network
US20030037132A1 (en) * 2001-08-20 2003-02-20 Abdollahi Mahshid Ellie Controlling multiple nodes using SNMP
US20030120762A1 (en) 2001-08-28 2003-06-26 Clickmarks, Inc. System, method and computer program product for pattern replay using state recognition
US20030156132A1 (en) 2002-02-21 2003-08-21 Nandakumar Gn Method and apparatus for generating a graphical interface to enable local or remote access to an application having a command line interface
US20030163570A1 (en) 2002-02-26 2003-08-28 Sun Microsystems, Inc. Command line interface session tool
DE10211080A1 (de) 2002-03-13 2003-10-09 Oce Printing Systems Gmbh Verfahren, Gerätesysteme und Computerprogramme zum Erzeugen gedruckter Dokumente mit einer eindeutigen Kennung
US7490167B2 (en) 2002-05-22 2009-02-10 Sony Corporation System and method for platform and language-independent development and delivery of page-based content
US7051230B2 (en) 2002-07-18 2006-05-23 International Business Machines Corporation Method and system for allowing customization of remote data collection in the event of a system error
US7243124B1 (en) 2002-09-06 2007-07-10 Oracle International Corporation Architecture for general purpose near real-time business intelligence system with client devices and methods therefor
US7290263B1 (en) 2002-12-19 2007-10-30 Extreme, Networks, Inc. Method and system for a scriptable command line interface
US7454785B2 (en) 2002-12-19 2008-11-18 Avocent Huntsville Corporation Proxy method and system for secure wireless administration of managed entities
US7386786B2 (en) 2003-01-24 2008-06-10 The Cobalt Group, Inc. Method and apparatus for processing a dynamic webpage
US7533141B2 (en) * 2003-01-24 2009-05-12 Sun Microsystems, Inc. System and method for unique naming of resources in networked environments
US7290249B2 (en) 2003-01-27 2007-10-30 Bea Systems, Inc. System and method for java message service mark-up language
US20040158638A1 (en) 2003-02-06 2004-08-12 Peters Jay R. St. Providing static and dynamic event data
US20040163090A1 (en) 2003-02-19 2004-08-19 Sun Microsystems, Inc, Method, system, and article of manufacture for a command line interface
US7483947B2 (en) 2003-05-02 2009-01-27 Microsoft Corporation Message rendering for identification of content features
US7624375B2 (en) 2003-06-12 2009-11-24 National Instruments Corporation Automatically configuring a graphical user interface element to bind to a graphical program
US20050021652A1 (en) * 2003-07-25 2005-01-27 Sun Microsystems, Inc. Synchronous collaborative shell integrated instant messaging
US7421658B1 (en) 2003-07-30 2008-09-02 Oracle International Corporation Method and system for providing a graphical user interface for a script session
US7266734B2 (en) 2003-08-14 2007-09-04 International Business Machines Corporation Generation of problem tickets for a computer system
US6897870B1 (en) 2003-08-15 2005-05-24 Apple Computer Inc. Glyph rendering quantization for subpixel positioning
US20050060693A1 (en) 2003-08-27 2005-03-17 Terry Robison Command string parsing
US7457872B2 (en) 2003-10-15 2008-11-25 Microsoft Corporation On-line service/application monitoring and reporting system
US20050182966A1 (en) * 2004-02-17 2005-08-18 Duc Pham Secure interprocess communications binding system and methods
US7505946B2 (en) 2004-03-31 2009-03-17 Microsoft Corporation High performance content alteration architecture and techniques
US20060026601A1 (en) 2004-07-29 2006-02-02 Solt David G Jr Executing commands on a plurality of processes
US7526773B2 (en) 2004-08-31 2009-04-28 Sap Ag Parsing and handling events from .NET objects
US7478380B2 (en) 2004-11-15 2009-01-13 Dell Products L.P. Dynamically updatable and easily scalable command line parser using a centralized data schema
GB0426846D0 (en) 2004-12-08 2005-01-12 Ibm Method and system for administration of a broker-based publish/subscribe messaging system
US20070006153A1 (en) 2005-05-25 2007-01-04 Microsoft Corporation Extensible testing framework
US7707269B2 (en) 2005-11-02 2010-04-27 Nortel Networks Limited Interfacing between a command line interface-based application program and a remote network device
US8150960B2 (en) 2005-11-23 2012-04-03 Microsoft Corporation Event forwarding
US7933986B2 (en) 2006-02-16 2011-04-26 Microsoft Corporation Transferring command-lines as a message

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146844A (ja) * 1993-04-30 1995-06-06 Texas Instr Inc <Ti> 製造装置の制御および調整を行う統合オートメーション開発システムおよび方法
JPH09231156A (ja) * 1996-02-28 1997-09-05 Nec Corp プログラム受信機能付遠隔実行装置
JP2001125872A (ja) * 1999-10-26 2001-05-11 Nec Corp 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
JP2005508035A (ja) * 2001-11-01 2005-03-24 ヤフー! インコーポレイテッド インターネット・ブラウザを用いてオンライン・ショッピングを簡便化する方法およびシステム
JP2005129018A (ja) * 2003-09-05 2005-05-19 Groove Networks Inc オペレーション・システム・フォルダー式ファイル・システムにおけるコラボレーション・システムの属性を提供するための方法及び装置
JP2005108188A (ja) * 2003-09-30 2005-04-21 Microsoft Corp リモートデバイスのメディア能力を判定するシステムおよび方法
JP2007518187A (ja) * 2004-01-16 2007-07-05 マイクロソフト コーポレーション リモート境界を横切ってコンピュータ読取り可能オブジェクトを転送するためのシステムおよび方法
JP2006244471A (ja) * 2005-03-04 2006-09-14 Microsoft Corp コマンドラインデータ型の検出および変換

Also Published As

Publication number Publication date
US20070192502A1 (en) 2007-08-16
US7933964B2 (en) 2011-04-26
EP1989633B1 (en) 2016-11-16
EP1989633A4 (en) 2010-03-10
EP1989633A1 (en) 2008-11-12
JP5022382B2 (ja) 2012-09-12
KR20080093117A (ko) 2008-10-20
KR101292442B1 (ko) 2013-07-31
WO2007094915A1 (en) 2007-08-23

Similar Documents

Publication Publication Date Title
US8090838B2 (en) Shell operation flow change
US7707564B2 (en) Systems and methods for creating network-based software services using source code annotations
CN106254423B (zh) 基于微服务架构实现Restful服务快速发布的方法
CN101351771B (zh) 用于获取并应用交互式环境内对构造的约束的方法和系统
US9442822B2 (en) Providing a visual representation of a sub-set of a visual program
US8683428B2 (en) Automated generation of client/driver communication interfaces
US8819286B2 (en) Methods, systems, and apparatus for processing messaging data sets using structured data sets
Pedrosa et al. Analyzing protocol implementations for interoperability
JP2011086291A (ja) システムランドスケープ対応アプリケーション間通信インフラストラクチャ
CN110187986B (zh) 一种命令管理方法、系统、装置及计算机可读存储介质
JP2006195979A (ja) ウェブアプリケーションアーキテクチャ
JP5022382B2 (ja) シェル・セッション
CN111695328B (zh) 模拟测试报文生成方法、装置、设备及存储介质
Simonsen et al. Towards a CPN-based modelling approach for reconciling verification and implementation of protocol models
KR102679305B1 (ko) 외부 시스템들 간 연계 흐름을 제공하는 흐름 관리 시스템 및 연계 흐름 관리 방법
Feng et al. Case study: Consistency problems in a UML model of a chat room
Maanpää A Web Component for Real-Time Collaborative Text Editing
Brown Dynamic apache with ajax and json
Deinum et al. Securing Spring WebFlux Applications
Yu et al. XUPClient–a thin client for rich internet applications
Casario et al. HTML5 WebSocket
CN116136860A (zh) 一种事件转发方法、装置、电子设备和存储介质
Munaretti et al. Experimental dependability assessment using a faultload specification tool
Kopta et al. Grid access and user interface in CLUSTERIX project
Poo et al. Networking and Multithreading

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120514

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120608

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120615

R150 Certificate of patent or registration of utility model

Ref document number: 5022382

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150622

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250