KR101292442B1 - 커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을확립하는 방법 - Google Patents

커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을확립하는 방법 Download PDF

Info

Publication number
KR101292442B1
KR101292442B1 KR1020087019195A KR20087019195A KR101292442B1 KR 101292442 B1 KR101292442 B1 KR 101292442B1 KR 1020087019195 A KR1020087019195 A KR 1020087019195A KR 20087019195 A KR20087019195 A KR 20087019195A KR 101292442 B1 KR101292442 B1 KR 101292442B1
Authority
KR
South Korea
Prior art keywords
command
shell
execution
remote
input
Prior art date
Application number
KR1020087019195A
Other languages
English (en)
Other versions
KR20080093117A (ko
Inventor
레이몬드 더블유. 맥컬럼
알렉산더 노소브
브라이언 레이스타드
비쉬와 컴발리머트
스티브 멘지스
스티브 이
요하네스 헬랜더
Original Assignee
마이크로소프트 코포레이션
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 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080093117A publication Critical patent/KR20080093117A/ko
Application granted granted Critical
Publication of KR101292442B1 publication Critical patent/KR101292442B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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

커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는 컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을 확립하는 방법{SHELL SESSIONS}
커맨드-라인 인터프리터(command-line interpreter) 또는 쉘 프로세서는 컴퓨터 시스템과 인터랙트하는(interact) 일반적인 방법이다. 커맨드들은 (예를 들면, 텍스트 문자들 또는 컨트롤 문자들과 같은) 타이핑된 문자들의 시퀀스로서 키보드로부터 입력되고, 이후 출력이 텍스트 스트링(string of text)으로서 수신된다. 이러한 시퀀스들은 통상적으로, "무엇을 하라(do something)", "어떻게(how)", 및 "무엇에(to what)"의 형태를 취한다. 실제로, "무엇을 하라"는 동사이고, "어떻게"는 (예를 들면, 커맨드가 "장황하게(verbosely)" 또는 "조용하게(quietly)" 실행됨이라면) 부사이며, "무엇에"는 이 커맨드가 동작해야(act) 하는 대상인 하나 이상의 파일을 통상적으로 지칭한다. 커맨드에 대한 입력들, 출력을 어디로 라우팅할지를 나타내는 리디렉션 문자들(redirection characters) 뿐만 아니라 기타 컨트롤 문자들과 같은 다른 문자들도 이들 커맨드 시퀀스들에 포함될 수 있다.
커맨드-라인 인터페이스들은 사용되고 있는 최초의 인터랙티브 인터페이스들 중 일부였다. 그래픽 사용자 인터페이스(graphic user interface;GUI)의 도래에도 불구하고, 커맨드-라인 쉘은 여전히 핵심적인 관리 도구(administrative tools)로 남아 있는데, 그 이유는 사용자 커맨드들이 사용자 인터랙션 없이 더 복잡한 태스크들을 자동으로 수행하도록 쉽게 배치화될(batched) 수 있기 때문이다. 최근의 운영 체제들은, 이 커맨드-라인 인터프리터들을 이용하여 사용자들이, 직접, 또는 쉘에 내장되어 있거나 또는 쉘과 인터랙트하도록 설계된 유틸리티의 도움을 받아, 키보드로부터 커맨드들을 입력하고 그 텍스트 출력을 살펴봄으로써 시스템과 인터랙트하는 것을 가능하게 하는, 많은 커맨드-라인 인터프리터들을 지원한다. 이 커맨드-라인 인터프리터들은, 또한, 커맨드들의 시퀀스가, 사용자를 대신하여(on behalf of the user) 배치 모드로 실행되는 것을 가능하게 한다.
상술한 바와 같이, 지금까지 이러한 쉘 커맨드 프로세서들은 문자-지향적(character-oriented)이다. 이것은 쉘 커맨드 프로세스가 사용자로부터 문자별로(character-by-character) 입력을 받아들이며, 쉘이 입력을 살펴보고, 입력을 실행하는 것을 시도해야 한다는 것을 신호하는 (예를 들면, "CR(carriage return)" 또는 "엔터(Enter)"와 같은) 특수 문자를 기다린다는 것을 의미한다. 이 문자가 제공되면, 프로세서는 입력을 파싱하고, 이 입력이 합법적인 커맨드인지의 여부를 판정하고, 그 실행을 시작한다. 이것이 합법적인 커맨드가 아닐 경우, 일반적으로 오류가 반환된다. 이것이 합법적인 커맨드인 경우, 커맨드가 실행되어, 오퍼레이터에 의해 확인될 수 있는 그 고유의 문자 출력을 생성할 수 있다.
사용자에 의해 채용되는 패러다임(paradigm)은, 통상적으로, 쉘을 "오픈(open)"하고, 키보드를 통해 쉘에 문자들을 제공하고, 쉘이 입력으로서 엔터 키(또는 사용되는 문법에 따라 다른 적절한 문자)를 수신할 때마다 쉘은 지금까지 수 신했던 모든 문자들을 하나의 단위(unit)로서 처리하는 것을 시도한다. 일단 쉘 프로세서가 한 커맨드로서 각 단위를 실행시키면, 쉘 프로세서는 출력을 보고한다. 오류가 있는 입력에 직면하게(encountered) 되면, 프로세서는 오류 메시지를 포함하는 문자들의 집합을 사용자에게 반환할 수 있다. 이후 이 사이클은 쉘 프로세서를 종료시키거나 또는 프로그램을 빠져나옴으로써 사용자가 쉘 프로세서를 "클로즈(close)"할 때까지 반복된다.
컴퓨터들이 네트워킹을 통해 접속되게 됨에 따라, 이러한 커맨드들을 원격으로 실행시킬 수 있는 것이 필요하게 되었다. 따라서, 커맨드 프로세서가 아니라 키보드가 멀리 있는 것처럼 문자별 기반으로(character-by-character basis) 또한 기능하는 많은 수의 공지된 원격 쉘 프로토콜들(예를 들면, 텔넷(telnet), 시큐어 텔넷(secure telnet), 시큐어 쉘(secure shell) 등)이 개발되었다. 쉘이 일단 오픈되면, 문자들이 이리 저리 흘러다니고, 쉘 프로토콜은 사실상 커맨드가 언제 실행되는지 또는 정말로 임의의 커맨드가 실행된 적이 있는지를 모른다. 다시 말해, 프로토콜은 단순히 입력 문자와 출력 문자를 이리 저리 전달한다. 비록 이것은 한 오퍼레이터로 하여금 한 장소에 있으면서 다른 장소에 있는 컴퓨터에 대해 커맨드들을 실행하는 것을 가능하게 하지만, 이러한 기술에 대한 효율성, 정보 처리 상호 운용의 가능성(interoperability) 및 기타 문제점이 많이 있다.
예를 들면, 일부 커맨드들은 처리할 입력 스트림을 필요로 하기 때문에, 이 문자별 접근 방식은 옳지 않은 거동(behavior)을 초래할 수 있는 경우가 있다. 예를 들어보면, 정확한(precise) 문자 시퀀스가 커맨드 또는 쉘 프로세서에 의해 생 략될 수 있는 장애 시나리오(failure scenario) 동안 그럴 수 있다. 이러한 경우, 입력 스트림들이 다음 커맨드에 대해 오해되거나(mistaken), 또는 다음 커맨드가 이전 커맨드의 입력 스트림에 대해 오해될 수 있다. 그 입력이 파일인 커맨드의 예를 들어보자. 커맨드를 실행시키기 위한 리턴 문자(예를 들면, "엔터")가 파일의 입력 문자들 이전에 수신되지 않으면, 파일 내의 입력 문자들 중 하나(즉, 하나의 리턴 문자)가 실행 커맨드에 대해 오해될 수 있다.
마찬가지로, (예를 들면, 입력 문자들 이전에 리턴 문자가 수신되는 위의 예에서와 같은) 오류 상태(faulted state)가 없다 하더라도, 입력 문자들이 다른 커맨드들 또는 현재 실행되는 커맨드의 다른 컨트롤들에 대해 오해될 수 있는 상황이 있다. 다시 말하자면, 문자별 입력이 문자별 커맨드 및 컨트롤 스트림들과 반드시 분리될 필요는 없기 때문에, 커맨드 또는 컨트롤 스트링과 유사한 하나의 문자 스트링이 있는 입력은 이러한 기능에 대해 오해될 수 있다. 예를 들면, 한 문자 스트링이 종료 커맨드 시퀀스(예를 들면, Ctrl^X, Ctrl^C 등)와 동일한 입력 스트링에 대해 커맨드가 실행되는 경우, 그 처리는 실수로 중단될 수 있다. 물론, 잘못된 입력 스트링에 따라, 다른 커맨드 또는 컨트롤 동작이, 파일의 재배치(relocation) 또는 파일의 리네이밍(renaming), 파일의 삭제 또는 제거, 전체 시스템의 셧다운 또는 기타의 위험한 동작들과 같은, 더 문제가 심각한 응답을 초래할 수 있다.
게다가, 쉘 프로세스를 원격으로 동작시키기 위한 현재의 문자별 프로토콜에서의 다른 문제점은, (1) 실수가 커맨드 처리의 초반에 인지되지 않는 점과 (2) 이 들 시스템이 통상적으로 플랫폼 불가지론적(agnostic)이거나 또는 언어 불가지론적이지 않다는 점이 있다. 보다 구체적으로는, 클라이언트는 단순하게 키보드의 확장으로서만 동작하기 때문에, 이러한 클라이언트는, 통상적으로, 커맨드가 적법한지, 커맨드가 실행되는지의 여부 및 언제 실행되는지 및/또는 어떤 유형의 운영 체제 또는 어떤 유형의 문법이 쉘 프로세스에 의해 사용되는지에 관해 모른다. 이와 같이, 잘못된 커맨드 또는 입력이 네트워크 와이어를 통해 전송되고, 이것은 처리 사이클의 초반에 인지되지 않는다. 게다가, 사용자는 원격 쉘에서 채용된 프로토콜의 특정 유형(예를 들면, UNIX 쉘, SSH 등)에 기초하여 문자의 용도(character usage)를 알고 이를 조정할 필요가 있다. 따라서, 현재의 커맨드-라인 쉘 프로토콜들의 상술한 단점 및 다른 단점 그리고 그 결함은 효율성, 정보 처리 상호 운용의 가능성 및 기타 각종 문제점을 일으킨다.
현재의 원격 커맨드-라인 메커니즘의 상술된 결함 및 단점은 본 발명의 예시적인 실시예를 통해 극복된다. 예를 들면, 본 명세서에 설명된 실시예는 데이터의 이진 스트림 또는 데이터의 문자-지향 스트림이 아니라 메시지 내에 바인딩 메커니즘을 제공함으로써 커맨드-라인 쉘 처리 세션을 확립하는 것을 제공한다. 본 요약은 이하의 발명의 상세한 설명에서 더 설명되는 일련의 개념들을 간단한 형태로 소개하기 위해 제공되는 것임을 유의한다. 이 요약은 청구되는 내용의 주요 특징 또는 핵심적인 특징을 알아보고자 하는 것이 아니며, 청구되는 내용의 범주를 결정하는 데 있어 돕기 위해 사용되고자 하는 것 또한 아니다.
커맨드-라인을 실행시키기 위한 원격 컴퓨팅 시스템에서, 그리고 한 예시적인 실시예에 따라, 원격 커맨드-라인 프로세서에서 쉘을 오픈하기 위한 요청 메시지가 수신된다. 실행을 위해 커맨드를 쉘로 전달하는(transfer) 데에 사용되는 바인딩 메커니즘이 제공된다. 이후, 커맨드를 실행시키기 위한 실행 요청 메시지가 수신되고, 실행 요청 메시지는 한 단위의 커맨드와 바인딩 메커니즘을 포함한다.
네트워크 컴퓨팅 환경의 클라이언트 장치에서의 유사한 예시적인 실시예는, 데이터의 이진 스트림이 아니라 메시지를 이용하여 일련의 커맨드들을 원격 쉘에 바인딩하는 바인딩 메커니즘을 사용하여, 커맨드를 위한 원격 처리 세션을 확립하는 것을 제공한다. 이 실시예에서, 원격 커맨드-라인 프로세서에서 쉘을 오픈하기 위한 요청 메시지가 전송된다. 그 후, 실행을 위해 커맨드를 쉘로 전달하는 데에 사용되는 바인딩 메커니즘이 수신된다. 게다가, 커맨드를 실행시키기 위한 실행 요청 메시지가 전송되고, 실행 요청 메시지는 한 단위의 커맨드와 바인딩 메커니즘을 포함한다.
본 발명의 추가의 특징 및 이점은 이어지는 상세한 설명에서 설명될 것이며, 일부는 설명으로부터 명백할 것이며, 또는 일부는 본 발명의 실시에 의해 학습될 수 있다. 본 발명의 특징 및 이점은 첨부된 특허청구범위에서 특별히 지적된 도구와 조합에 의해 실현되고 획득될 수 있다. 본 발명의 이들 및 다른 특징은 이하의 설명, 첨부된 특허청구범위로부터 더욱 명백해질 것이며, 또는 이하에 설명되는 바와 같이 본 발명의 실시에 의해 학습될 수 있다.
도 1a는 예시적인 실시예에 따른 원격 커맨드-라인 쉘 처리를 위한 메시지 프로토콜 핸들러를 이용하는 네트워크를 도시하는 도면.
도 1b는 예시적인 실시예에 따른 커맨드 세션을 확립하기 위한 오픈 메시지와 리턴 쉘 식별자의 이용을 도시하는 도면.
도 1c는 예시적인 실시예에 따라, 메시지를 이용하여 커맨드 단위를 실행용 쉘 프로세서에게 전송하는 것을 도시하는 도면.
도 1d는 예시적인 실시예에 따라, 실행된 커맨드의 출력을 스트리밍하는 것을 도시하는 도면.
도 1e는 예시적인 실시예에 따라, 입력 스트림 메시지와 커맨드 메시지를 분리시키는 것을 도시하는 도면.
도 1f는 예시적인 실시예에 따라, 쉘 세션에 대한 컨트롤 동작들을 전송하는 메시지의 사용을 도시하는 도면.
도 1g는 예시적인 실시예에 따라, 쉘 세션을 종료시키는 클로즈(close) 메시지를 사용하는 것을 도시하는 도면.
도 2는 예시적인 실시예에 따라, 원격 쉘에서 커맨드-라인을 실행시키는 데 사용되는 프로토콜에 대한 흐름도.
본 발명의 상술된 이점 및 특징 그리고 다른 이점 및 특징이 획득될 수 있는 방식을 설명하기 위해, 간단하게 상술된 본 발명의 좀 더 구체적인 설명은 첨부된 도면에 도시된 특별한 실시예들을 참조할 것이다. 이들 도면이 발명의 통상적인 실시예들만을 도시하므로 발명의 범위를 제한하는 것으로 간주되지 않는다는 것을 이해할 것이며, 본 발명은 첨부된 도면을 사용하여 추가의 전문성으로 그리고 상세하게 설명되고 설명될 것이다.
본 발명은 (1) 문자-지향 전송이 아니라 구조화된 기본 단위(structured atomic unit)로서 커맨드들을 전달하고 ; (2) 일련의 커맨드들로서 쉘의 일생(lifetime)을 모델링하고 ; (3) 문자들이 아니라 특별한 유형의 메시지들로서 쉘의 동작 흐름을 바꾸는 비동기 컨트롤 시그널들을 모델링하고 ; 및 (4) 전용 입력 및 출력 메시지의 스트림으로서, 즉, 커맨드들과 입력/출력 스트림들을 혼합하지 않고 클라이언트와 원격 쉘 간의 데이터 교환을 모델링하는 방법, 시스템 및 컴퓨터 프로그램 제품에 이른다. 본 발명의 실시예는 이하에 더 자세하게 설명되는 바와 같이, 각종 컴퓨터 하드웨어 또는 모듈을 포함하는, 특수 목적의 컴퓨터 또는 범용 컴퓨터를 포함할 수 있다.
본 명세서에서 설명된 실시예는 쉘이 문자들의 단위로서 커맨드를 실행시킨다는 원칙에 기초한다. 따라서, 본 명세서의 실시예는, 임의의 네트워크 동작을 하기 전에 각 커맨드를 격리시키고(isolate), 커맨드를 살펴보고, 소정의 수준의 유효성 검사(validation)를 수행하고, 이 커맨드의 구조화된 표현을 원격 프로세서에게 전달하기(deliver)에 충분한 지능을 갖는 전송 측(sending side)을 제공한다. 보다 구체적으로는, 본 명세서의 실시예는, 커맨드를 식별하고 이 커맨드를 단일의 메시지(예를 들면, SOAP, HTTPS, 또는 기타 유형의 메시지)내에 캡슐화하는 메커니즘을 제공하며, 이 단일의 메시지는 전체 단위로서 처리하기 위해 원격 쉘에 전송 된다. 따라서, 본 명세서의 실시예는 커맨드를 문자-지향 전송이 아니라 단일의 단위로서 간주한다.
다른 실시예들은, 사용자 입력(만약, 있다면)이 커맨드를 실행시키기 위한 추가의 정보이지만 커맨드 그 자체와는 다른 의미론(semantics)을 지님을 또한 고려한다. 따라서, 본 명세서의 실시예들은 이러한 사용자 제공 데이터를 하나 이상의 입력 스트림으로 간주한다. 마찬가지로, 실시예들은 커맨드가 정규(normal) 출력과, 상태 코드 또는 오류 코드를 발행함(emit)을 고려한다. 이와 같이, 실시예는 이들 데이터를 출력 스트림으로서 간주한다. 한 커맨드의 출력이 다음 커맨드의 입력이 되도록 체인화(chained)될 수 있기 때문에, 입력 스트림과 출력 스트림 둘 모두를 지정하고(designate), 입력 스트림과 출력 스트림을 커맨드 그 자체와 계속 분리되게(segregate) 하는 형식적인 메커니즘이 본 명세서에서 설명된다.
커맨드를 스트림으로부터 분리시키고 문자-지향 전송을 제거하는 이 두 부분으로 이루어진 모델을 설명하는 상기 및 다른 실시예들은 몇몇 이점을 지닌다. 먼저, 네트워크 사용성(usage)이 더 효율적이다. 네트워크 카드의 최소 전송 단위가 통상적으로 512 옥텟 또는 그 이상인데, 문자 지향 프로토콜에서 커맨드를 어셈블링하는 데에 관여되는 각 문자는 네트워크 패킷 전체를 필요로 할 수 있다. 본 명세서에 설명된 모델에서는, 일단 커맨드를 실행시킬 때가 되면 실제로 단 하나의 메시지만이 전달된다.
커맨드의 보안 및 정확도 또한 개선되는데, 그 이유는 커맨드가 격리된 단위이고, 커맨드 실행을 시도하기 전에 커맨드 전체를 살펴보고 접근성 및 유효성 컨 트롤 리스트에 대해 점검될 수 있기 때문이다. 다시 말해, 네트워크의 전송 측에서 소정의 수준의 보안 및 유효성 검사가 수행될 수 있기 때문에, 오류가 처리 사이클의 초반에 인지될 수 있다.
또한, 단위 내의 커맨드들을 격리시키는 것은 커맨드가 프로세서에 전달되는 방법의 구별을 없애서, 시스템 플랫폼 및 언어 불가지론적(agnostic)이 되게 한다. 예를 들면, 커맨드들은 SOAP를 이용하여 또는 HTTP 요청에서 인코딩되어, 서로 다른 운영 체제의 쉘 프로세서들의 기초적인 차이점으로부터 이 커맨드들을 격리시킬 수 있다. 반면, 문자-지향 프로토콜은 운영 체제의 거동을 직접적으로 반영한다. 그러므로, 사용자는 원격 쉘에서 사용되는 언어 또는 문법을 이해해야 한다.
또 다른 실시예는 쉘 동작의 흐름을 바꾸는 비동기 컨트롤 시그널들의 몇몇 특별한 사례를 제공한다. 예를 들면, 사용자가 진행중인 커맨드의 조기 종료를 원하는 경우, "control-break"나 다른 문자 스트링의 일부 유형이 통상적으로 커맨드 쉘에 제시되었다. 따라서, 본 명세서에 설명된 실시예들은 이것("control-break"나 다른 문자 스트링의 일부 유형) 및 다른 컨트롤 시그널들을, 입력 스트림의 특수 문자가 아니라 전용 메시지로서 모델링한다.
이로운 특징에 대한 더 특별한 참조가 도면들과 관련하여 이하에 더 상세하게 설명되지만, 본 발명의 범위 내의 실시예는 또한 컴퓨터 판독가능 매체에 저장된 컴퓨터 실행가능 명령어 또는 데이터 구조를 담고 있거나(carrying) 또는 지니고 있는(having) 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 컴퓨터 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 임의의 사용가 능한 매체일 수 있다. 그 예로서, 이러한 컴퓨터 판독가능 매체로는, RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 지니거나 또는 이를 저장하는 데 사용될 수 있는 임의의 기타 매체일 수 있으나, 이에 제한되지 않는다. 네트워크 또는 다른 통신 접속(유선, 무선 또는 유무선의 조합)을 통해 컴퓨터로 정보가 전송되거나 또는 제공되는 경우, 컴퓨터는 당연히 이 접속을 컴퓨터 판독가능 매체로 간주한다. 따라서, 이러한 임의의 접속은 당연히 컴퓨터 판독가능 매체라 지칭된다. 상술된 것의 조합이 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
컴퓨터 판독가능 명령어는 예를 들면 범용 컴퓨터, 특수 목적의 컴퓨터, 또는 특수 목적의 처리 장치로 하여금 소정의 함수 또는 소정의 함수들 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 본 내용이 구조적인 특징 및/또한 방법론적인 액트에 특정한 언어로 설명되었지만, 첨부된 청구항에 정의된 내용이 상술된 특정 특징 또는 액트에 제한될 필요는 없음을 이해할 것이다. 오히려, 상술된 특정 특징 및 액트는 청구항을 구현하는 예시적인 형태로서 개시된다.
본 명세서에 사용된 바와 같이, "모듈" 또는 "컴포넌트"라는 용어는 컴퓨터 시스템 상에서 실행되는 소프트웨어 객체 또는 루틴을 지칭할 수 있다. 본 명세서에 설명된 다른 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템상에서 실행되는 객체 또는 프로세스로서(예를 들면, 분리된 쓰레드들로서) 구현될 수 있다. 본 명 세서에 설명된 시스템 및 방법이 소프트웨어로 구현되는 것이 바람직하나, 하드웨어로 또는 소프트웨어 및 하드웨어의 조합으로 구현되는 것 또한 가능하며 고려할 수 있다. 본 명세서에서, "컴퓨팅 엔티티"는 본 명세서에서 이전에 정의된 임의의 컴퓨팅 시스템, 또는 컴퓨팅 시스템상에서 실행 중인 임의의 모듈 또는 모듈레이트들(modulates)의 임의의 조합일 수 있다.
도 1a는 예시적인 실시예에 따라 원격 커맨드-라인 쉘 처리용의 메시지 프로토콜 핸들러를 사용하도록 구성된 네트워크를 도시한다. 도시된 바와 같이, 클라이언트(105)는, 사용자로 하여금 키보드 또는 다른 유사한 인터페이스를 이용하여 커맨드를 입력하는 것을 가능하게 하는 커맨드-라인 인터페이스(115)를 포함한다. 예시적인 실시예에 따라, 이러한 커맨드는 메시지 프로토콜 핸들러(125)에 의해 평가되고 처리될 수 있다. 다시 말해, 메시지 프로토콜 핸들러(125)는 이하에 더 상세하게 설명되는 바와 같이, 커맨드들을 격리하고, 커맨드들을 살펴보고, 다양한 수준의 유효성 검사(validation) 및 다른 동작들을 수행할 수 있는 해석 메커니즘(interpretation mechanism)을 정의한다. 이후, 이 커맨드들은 한 메시지(예를 들면, SOAP, HTTP 등) 내에 캡슐화되어 네트워크(100)를 통해 원격(110) 측으로 전달되며, 여기서 메시지 프로토콜 핸들러(130)는 메시지를 처리하고, 그 커맨드를 추가의 처리를 위해 커맨드-라인 쉘 프로세서(130)에 전달한다.
메시지 프로토콜 핸들러(125)를 이용함으로써, 커맨드가 플랫폼 및 언어 불가지론적인 방식으로 처리될 수 있음을 유의한다. 특히, 클라이언트(105) 측의 메시지 프로토콜 핸들러(125)는 커맨드에 사용되는 문법의 특정 유형에 상관없이 커 맨드를 한 메시지 내로 캡슐화하도록 구성된다. 마찬가지로, 원격(110) 측의 메시지 프로토콜 핸들러(130)도 쉘 프로세서(120)의 문법에 상관없이 기록된 커맨드를 평가할 수 있으며, 또한 구현된 특정 언어 또는 사용되는 운영 체제의 유형에 상관없이 쉘 프로세서(120)가 커맨드를 처리하는 것을 가능하게 한다. 다시 말해, 메시지 프로토콜 핸들러(125, 130)는 커맨드를, 메시지 그 자체 내에 정의된 바와 같은 독립적인 형태로 변형시키고 이것으로부터 커맨드를 변환시킨다.
다시 말해, 이들 실시예의 한 양태는, 원격 프로세서(120)의 플랫폼에 특정한 특징들(platform-specific characteristics)이 플랫폼 경계들 전체에 걸쳐(across platform boundaries) 똑같은 메시지 모델 하에서 은닉된다는 점이다. 메시지들(예를 들면, SOAP) 하에서 커맨드의 실행 및 쉘의 일생(이하에 더 상세하게 설명됨)을 모델링함으로써, 쉘 프로세서(120)에서의 필수적이며 까다로운 차이점이 은닉된다.
이하의 실시예들이 플랫폼 및 언어 불가지론적인 방식으로 커맨드를 제공하기 위해, 상기 핸들러들(125, 130)을 이용하는 것으로서 설명될 수 있음에도 불구하고, 이러한 변환이 이 실시예들을 이용하는 데 필수가 아님을 유의한다. 게다가, 본 명세서에 설명된 실시예들이 통상적으로 네트워크 환경의 클라이언트와 원격 쉘 프로세서 사이에서 구현되지만, 실시예들 중 일부는 또한 로컬 머신에 적용될 수 있음을 유의한다. 또한, 본 명세서에 설명된 실시예를 수행하고 모델링하기 위해 임의의 개수의 모듈 및 구성이 또한 고려됨을 유의한다. 따라서, 임의의 특정 인코딩 포맷의 임의의 특정 사용, 언어 문법 또는 운영 체제, 설계 레이아웃 또 는 본 명세서에 설명된 실시예를 구현하기 위한 원격 쉘 또는 기타 특정 쉘 모듈의 이용은 단지 도시용이며, 달리 특별하게 청구되지 않는다면, 본 명세서에 설명된 실시예의 범위를 제한하거나 또는 이를 축소하는 것이 아니다.
도 1b에 도시된 바와 같이, 사용되는 컴퓨팅 시스템의 유형에 관계없이, 클라이언트(105)는 커맨드 처리를 위해 쉘(120)을 오픈하고자 하면, 실시예는, 커맨드 쉘 프로세서를 오픈하는 개념을 곧이어 모델링하는, 구조화된 쉘 오픈 메시지(135)를 발행하는 것을 허용한다. 따라서, 이 실시예는 운영 체제 환경 내에서 "커맨드 윈도우(command window)"를 로컬로 오픈하는 액트를 모방한다(mimic). 이후 메시지(135)는 원격 머신(110)에 전달되며, 여기서 "진짜(real)" 쉘(120)을 로컬로 오픈하고, 그 입력 및 출력을 원격 세션에 첨부한다. 이 초기 메시지(135)는, 통상적으로, 쉘(120)을 위한 환경 변수, 디폴트 디렉토리(미도시) 및 기타 초기화(예를 들면, 디폴트 변수를 오버라이트하고, 커맨드의 거동을 제어하는 새 변수를 추가하는 등)가 수행될 수 있는 곳이다.
본 명세서에 설명된 이들 및 다른 실시예에서, 쉘 프로세서(120)에 의해 일어나는 처리가, 이러한 처리의 실제 구현의 거동을 모방하는 가상 프로세스(virtual process)일 수 있음을 유의한다. 다시 말해, 일어나는 동작들은 특정 쉘 프로세서(120)에서 일어나는 것처럼 보일 수 있다. 그러나, 기타 모듈들 또는 컴포넌트들은, 이하에 더 상세하게 설명하는 바와 같이, 커맨드를 처리하고 또는 시그널 컨트롤을 구현하는 이러한 거동을 모방한다. 따라서, 본 명세서에서 설명되고 청구되는 쉘 프로세서(120) 및 그 거동에 대한 임의의 언급(reference)은 실 제 쉘 프로세서를 대신하여 또는 그와 유사하게 동작하는 가상 기계를 포함하도록 넓게 해석되어야 한다.
쉘 프로세서(120)의 측에서(예를 들면, 서버 측 구현에서), 쉘(120)의 오픈을 수신확인하기(acknowledge) 위해, 쉘 오픈 응답 메시지(140)를 클라이언트(105)에 다시 전송할 수 있다. 한 실시예에서, 쉘(120)을 식별하는 식별자(identifier)(142)(예를 들면, 도시된 예의 쉘 ID=123) 또는 토큰(token)이 메시지(140)에 첨부될 수 있음을 유의한다. 따라서, 이하에 더 상세하게 설명하는 바와 같이, 세션의 일생 전체에 걸쳐 바인딩 메커니즘(142)(예를 들면, 식별자(142) 또는 쉘 토큰)이 사용될 수 있다. 이것이 쉘 프로세서(120)의 세션(그 일생)을 일련의 문자가 아니라 일련의 커맨드로서 모델링하는 것이 가능하게 할 것임을 유의한다. 또한, 이 메커니즘이 여러 개의 쉘(120) 세션을 오픈하는 것을 가능하게 하여, 다수의 커맨드 시리즈의 동시 처리가 가능하게 함을 유의한다. 게다가, 쉘 세션에 대한 바인딩 메커니즘(예를 들면, 식별자(142) 또는 쉘 토큰)이 메시지 내에서 전송되기 때문에, 현재의 쉘 세션의 이진 또는 문자별 확립과 관련된 문제점들이 극복된다는 것을 유의한다.
그럼에도 불구하고, 본 명세서에서 설명된 일부 실시예들이 본 명세서에서 설명된 모델링 또는 세션 바인딩 메커니즘(142)을 반드시 필요로 하는 것은 아니라는 것을 유의한다. 예를 들면, 단 하나의 단일 세션 또는 쉘(120) 프로세스가 확립되면, 쉘 ID(142) 또는 토큰의 사용은 필요하지 않을 수 있다. 따라서, 세션 확립용 쉘 식별자 또는 토큰의 사용은, 단지 도시용으로 본 명세서에서 사용되며, 달 리 명시적으로 청구되지 않는다면, 본 명세서에 설명된 실시예의 범위를 제한하고자 하는 것이 아니다.
세션을 생성하거나 또는 세션을 확립하는 데 쉘 식별자(142)가 사용되는지의 여부에 관계없이, 도 1c에 도시된 바와 같이, 실시예에서는, 커맨드 쉘 프로세서(120)에 커맨드(들)을 발행할 때, 클라이언트(105) 애플리케이션이, 예를 들면, 커맨드의 이름, 그 스위치(switch) 및 성공적인 실행을 위한 기타 필요한 정보를 비롯한 완전한 커맨드 라인 유닛(147)을 전송 측에서 구성할 수 있다는 것을 제공한다. 다시 말해, 이전에 설명된 바와 같이, 본 명세서의 실시예는 커맨드(147)를 식별하고, 이를 살펴보고, 일부 유효성 검사와 그에 대해 기타 높은 수준의 처리(예를 들면, 액세스 또는 유효성 검사 컨트롤 리스트에 대해 비교함)를 수행하고, 처리를 위해 커맨드(147)를 쉘 프로세서(120)로 전송하기 위해 실행 커맨드 메시지(145) 내에 커맨드(147) 유닛을 캡슐화한다. 따라서, 본 명세서의 실시예는, 문자-지향 전송 모델에 의존하는 기존의 커맨드 쉘 프로토콜의 구현과는 대조적으로, 메시지-지향 프로토콜을 이용하여 구조화된 기본 유닛으로서 커맨드(147)를 전달한다.
본 명세서에서 도시된 커맨드는 단일의 "copy" 커맨드이지만, 다른 유형의 커맨드들 및 심지어 커맨드들의 조합도 메시지 내에 포함될 수 있음을 유의한다. 예를 들면, 커맨드 실행 메시지(145)는 한 커맨드의 출력이 다른 커맨드들의 입력으로 파이핑되는 다수의 커맨드들(147)을 포함할 수 있다. 그러나, 통상적으로, 단일의 메시지 내에는 단 하나의 커맨드만이 포함될 것이다. 하나 이상의 커맨드 들이 메시지(145) 내에 포함되는지의 여부에 상관없이, 커맨드(들)는 전체 단위로서 표현되어야 하며, 즉, 커맨드(147)의 일부 표현만을 포함해서는 안 된다. 따라서, 메시지(145) 내의 임의의 특정 유형 또는 임의의 특정 개수의 커맨드(147)는 본 명세서에서 도시용으로만 설명되며, 달리 청구되지 않는다면, 실시예의 범위를 제한하거나 또는 축소해서는 안 된다.
커맨드 실행 메시지(145)(뿐만 아니라 본 명세서에 설명된 다른 메시지들)는, 예를 들면, HTML(HyperText Markup Language), XML(eXtensible Markup Language) 등과 같은 임의의 유형의 공지된 포맷일 수 있음을 또한 유의한다. 게다가, 커맨드(147)(및 본 명세서에 설명된 다른 구성요소들)는 메시지의 임의의 부분, 예를 들면, 헤더, 본문(body) 또는 다른 필드에 위치될 수 있다. 또한 쉘의 세션 또는 일생이 식별자 또는 토큰(142)을 이용하여 확립되는 경우, 커맨드 실행 메시지(145) 또한 어느 쉘(120)이 동작을 실행시켜야하는 지를 식별하는 토큰(142)을 포함해야만 함을 유의한다.
커맨드 실행 메시지(145)에 응하여, 쉘 프로세서(120)는 통상적으로 실행 응답 메시지(150)를 발행할 것이다. 실행 응답 메시지(150)가 이하에 더 상세하게 설명되는 바와 같이 메시지 출력의 일부일 수 있음을 유의한다. 예를 들면, 실행 응답 메시지(150)는, 단순히 커맨드(147)가 실행되었는지 또는 실행되지 않았는지의 여부를 나타내는, 상태 코드, 오류 또는 기타 수신확인 메시지일 수 있다. 또한, 실행 응답(150)은, 이하에 더 상세하게 설명되는 바와 같이, 특정 입력과 출력을 식별하거나 또는 특정 입력과 출력을 커맨드(147)에 바인딩시키는 것과 같은 그 러한 일에 사용될 수 있는 (이 예의 커맨드 ID=456로서 도시된) 커맨드 식별자 또는 토큰(152)을 포함할 수 있음을 유의한다.
그러나, 쉘 식별자와 마찬가지로, 본 명세서에 설명된 일부 실시예에서 커맨드 토큰(152)이 반드시 필요하지 않음을 유의한다. 예를 들면, 다수의 커맨드들(147)이 하나의 세션 내에서 실행되고 있지 않는 경우 및/또는 입력/출력이 생성되지 않을 경우, 이러한 커맨드 식별자(152)는 필요하지 않을 수 있다. 또한, 필요에 따라 그리고 상술된 바와 같이, 실행 응답(150)이 쉘 식별자(142)를 포함할 수도 있고 또는 포함하지 않을 수도 있음을 유의한다.
그럼에도 불구하고, 도 1d에 도시된 바와 같이, 클라이언트(105)는 커맨드(147)의 실행에 의해 생성된 임의의 출력(160)을 추출하는 것을 시작해야만 하는데, 대부분의 커맨드들이 출력 그리고 최종적으로는 몇몇 종류의 최종 상태(예를 들면, 상태 코드, 오류 코드, 또는 상술한 기타 수신확인 메시지들)를 발행할(emit) 것이기 때문이다. 한 실시예에 따르면, 이 프로세스는 도시된 바와 같이 루프로 발생하며, 하나 이상의 출력 스트림(160)(예를 들면, 표준 출력 스트림, 표준 오류 스트림 또는 기타 출력 스트림)이 클라이언트(105)에 의해 수신되며, 출력 판독 메시지(155)를 이용하여 수신확인된다.
통상적으로, 클라이언트(105)는 커맨드(147)의 실행에 의해 발행된 임의의 스트림(예를 들면, 스트림 "A", "B", "C" 등)의 출력(160)이 더 이상 없을 때까지 상술된 루프를 계속해서 반복한다. 하나의 실시예에서, 커맨드(147)에 의해 발행된 각 스트림(예를 들면, 스트림 "A", "B", "C" 등)의 출력(160)이 메시지 블 록(150) 내에서 분리된다(segregate). 어느 시점에서, 통상적으로, 스트림 "C"에 있는 것이, 클라이언트(105)가 그 스트림에 대한 출력을 더 이상 얻지 않음을 나타내는 스트림 종료 표시자(end-of-stream marker)가 있을 것이다(이 스트림 종료 표시자는, 출력 내의 모드 스트림에 대한 종료 및/또는 커맨드가 종료하는 경우, 예를 들면, 응답에 exit 코드를 반환하는 경우 종료하게 되어 있는 그러한 스트림 또는 선택적인 스트림에 대한 종료를 나타내도록 사용될 수 있음을 유의하라). 결과적으로, 커맨드(147)의 처리에 수반되는 모든 스트림은 스트림 종료 표시자를 발행할 것이며, 스트림 종료 표시자는 응답 메시지(160)에 나타날 것이다. 또한, 예를 들면, 스트림 "A"를 참으로 설정하고, 스트림 "B"를 거짓으로 설정하는 것과 같이, 실시예에서, 클라이언트(105)에 출력될 수 있는 스트림의 유형을 구성하는 것이 가능함을 유의한다.
일단 커맨드(147)가 그 모든 출력(160)을 발행함(emit)으로써 종료하면, 클라이언트(150)는 상술된 바와 같이 또 다른 커맨드(147)를 발행할 수 있다. 그럼에도 불구하고, 상술된 바와 같이, 일부 실시예에서는, 또한, 둘 이상의 커맨드(147)가 동일한 쉘(120) 인스턴스에 대해 동시에 실행될 수 있고, 또한 경우에 따라 다수의 쉘(120) 세션에 대해 동시에 실행될 수 있게 한다.
출력 문자 각각을 전달하기 위해 여러 번 왔다 갔다 하는 대신, 출력(160)은 문자들 덩어리로 검색됨을 유의한다. 따라서, 소정의 응답(160)에는, 통상적인 커맨드 쉘 프로토콜의 문자-지향 전송과는 대조적으로, 하나 이상의 스트림에 대한 많은 양의 데이터가 있을 수 있다. 따라서, 출력(160)은 더 효율적으로 수신되고 디스플레이 및 다른 용도를 위해 처리된다. 또한, 상술된 바와 같이, 필요한 경우, 통상적으로 출력 메시지(160)는 쉘 및/또는 커맨드 식별자(142, 152)를 포함해야 함을 유의한다. 이러한 경우, 클라이언트(105)는, 다수의 쉘(120) 세션에서의, 다수의 커맨드(147)의 실행에 대한 다수의 출력을 수신할 수 있고, 쉘 프로세서(120)는 이를 생성할 수 있다. 게다가, 이하에 더 상세하게 설명되는 바와 같이, 이러한 출력(160) 스트림은 또한 각종 고려사항에 기초하여 그리고 수신된 입력에 관하여, 생성되고 전송되는 레이트로 동적으로 조정될 수 있다.
상술된 바와 같이, 일부 커맨드(147)는 또한 입력을 필요로 할 수 있다. 이러한 경우, 도 1e에 도시된 바와 같이, 본 명세서의 실시예는, 커맨드 실행 메시지(145)(및 커맨드(147))가 쉘 프로세서(120)에 전송된 후, 입력 스트림(165)이 커맨드(147)에 "피딩"되는 것을 허용한다(그러나, 일부 실시예에서는, 커맨드와 입력이 여전히 분리되어 있고 식별가능가능한 경우(예를 들면, 커맨드는 헤더에 있고 입력은 본문 등에 있는 SOAP 메시지), 입력이 또한 커맨드 실행 메시지(147) 내에 포함될 수 있음을 유의한다). 커맨드 식별자 또는 토큰(152)이 사용되는 경우, 입력은 통상적으로 커맨드 ID(152)가 알려진 후 전송될 것이다. 또한, 쉘 식별자(142)가 사용되는 경우, 이러한 식별자(142)는 적절한 쉘(120) 세션을 식별하도록 입력(165)에 포함되어야만 한다. 상술된 출력 스트림(160)과 마찬가지로, 입력(165)의 스트리밍은 임의의 스트림(예를 들면, 스트림 "A", "B", "C" 등)에 대해 커맨드(147)에 피딩될 입력 데이터가 없을 때까지 루프 유형의 방식으로 일어난다. 다시 말해, 쉘 프로세서(120)에게 성공적으로 전달된 입력 기록 메시지(165) 내의 입력 데이터의 이들 스트림에 대한 수신확인 메시지(170)가 클라이언트(105)에 의해 수신되며, 클라이언트(105)는 모든 입력이 수신된 것으로 수신확인(170)될 때까지 계속해서 입력(165)을 쉘 프로세서(120)에 스트리밍한다. 또한, 예를 들면, 스트림 "A"를 참으로 설정하고, 스트림 "B"를 거짓으로 설정하는 것과 같이, 실시예에서, 입력될 수 있는 스트림의 유형을 구성하는 것이 가능함을 유의한다.
출력 스트림(160)과 마찬가지로, 문자별로 각각의 입력을 전달하는 대신, 입력은 문자들 덩어리(chunks of characters)로 전송된다. 따라서, 소정의 입력 기록 메시지(165)는 통상적인 커맨드 쉘 프로토콜과는 대조적으로 하나 이상의 스트림에 대한 많은 양의 데이터를 지닐 수 있다. 따라서, 입력은 더 효율적으로 수신되고 처리된다. 또한, 필요한 경우, 상술된 바와 같이, 입력 메시지(165)는 쉘 및/또는 커맨드 식별자(142, 152)를 포함해야 함을 유의한다. 이러한 경우, 쉘 프로세서(120)는 다수의 쉘(120) 세션에서ㄹ의 다수의 커맨드(147)에 대한 다수의 입력을 처리할 수 있다.
다른 실시예에서는, 출력 판독 메시지(155)에 관하여 이미 상술한 바와 같이, 입력(165)의 처리가 출력(160)을 추출하는 것에 대하여 비동기로 그리고 동시에 일어나는 것을 허용한다. 따라서, 일부 커맨드(147)는 출력(160)을 생성하는 것보다 더 빠른/더 느린 레이트로 입력(165)을 필요로 할 수 있기 때문에, 본 명세서의 실시예들은 그에 따라 입력/출력 레이트를 정적으로 또는 동적으로 조정할 수 있다. 다시 말해, 입력(165) 메시지 흐름과 출력(160) 메시지 흐름 간에 임피던스(impedance) 불일치가 있을 수 있다. 게다가, 이 흐름들은 타임 아웃 이슈, 대 역폭 이슈, 양호한 스트림 등과 같은 임의의 개수의 쟁점(issue)에 기초하여 동적으로 또는 정적으로 조정될 수 있다. 게다가, 입력(165) 또는 출력(160) 둘 중 하나의 흐름은, 힌트 메시지, 구성 설정 또는 임의의 기타의 공지된 메커니즘에 기초하여 조정될 수 있다.
또 다른 실시예에서는, 쉘(120)의 동작 흐름을 비동기로 제어하거나 또는 이를 바꾸기 위한 특별 메시지의 사용을 허용한다. 예를 들면, 도 1f에 도시된 바와 같이, 커맨드의 실행을 종료하고, 일시 멈춤하고(pause), 재개하고, 또는 이를 수정하기 위해, 시그널 메시지들(175)이 사용될 수 있다. 다시 말해, 사용자가 커맨드(147)의 실행 상태를 바꾸고자 하면, 클라이언트(105)는 시그널 메시지(175)를 생성하고, 원하는 바대로 적절한 액션을 취할 수 있는 그러한 메시지를 쉘 프로세서(120)에 전송할 수 있다. (본 명세서에서 모델링되고 설명된 다른 실시예와 마찬가지로) 컨트롤 커맨드 또는 시그널 커맨드를 개별 메시지(175)로 모델링함으로써, 이러한 커맨드들은, 문자별 전송을 사용하는 프로토콜의 경우에 상술되었던 것과 같이, 한 커맨드에 대해 잘못 실행되지 않는다.
본 명세서에서 설명된 다른 프로세스와 마찬가지로, 커맨드(147)의 상태를 나타내는 시그널 응답 메시지(signal response message)(180)가 클라이언트에 반환될 수 있다. 이러한 응답 메시지(180)는, 커맨드(147)의 상태, 원하는 수정 또는 변경의 유형(175)(예를 들면, 이러한 수정이 적법한가 아닌가의 여부) 등과 같은 것에 기초하는, 오류 또는 다른 유형의 수신확인 메시지(180)일 수 있음을 유의한다. 또한, 커맨드 식별자 및/또는 세션 식별자(142, 152)가 사용되는 경우, 통상 적으로, 시그널 메시지(175) 및 응답(180)에는 제대로 처리하기 위한 적절한 토큰(152)을 포함해야 함을 유의한다. 또한, 이 시그널 식별자(및 본 명세서에 설명된 다른 식별자들)가 메시지의 임의의 부분에 포함될 수 있고, 코드로 나타날 수도 있고, 특정 필드 내의 플래그일 수도 있으며, 또는 기타의 유사한 잘 공지된 방식으로 식별될 수 있음을 유의한다.
클라이언트(105)가 쉘(120)을 더 이상 필요로 하지 않는 경우, 실시예는 또한 도 1g에 도시된 바와 같이, 쉘 클로즈 메시지(close shell message)(185)를 전송함으로써 쉘의 클로즈를 허용한다. 이전에 설명된 바와 같이 세션이 확립된다면, 쉘 클로즈 메시지(185)는 쉘 식별자(142)(Shell ID=123로 도시된)를 포함해야만 한다. 어느 경우든지, 쉘 프로세서(120)가 쉘을 클로즈하기 위한 요청(185)을 수신하면, 쉘 세션(120)은 종료할 것이고, (물론, 아무런 오류가 발생하지 않을 경우) 적합한 상태 또는 쉘 클로즈 응답(190)이 클라이언트(105)에게 반환될 수 있다.
상술된 실시예에서, 식별된 메시지의 각종 부분들이 임의의 잘 공지된 uri(uniform resource identifier)를 이용하여 나타내어질 수 있음을 유의한다. 예를 들면, 커맨드(147), 세션 오픈/클로즈, 쉘 식별자(142), 커맨드 토큰(152), 시그널 식별자(예를 들면, 종료, 일시 멈춤, 재개 등) 및 메시지의 다른 부분들은 임의의 공지된 uri를 이용하여 식별될 수 있다. 따라서, 이 실시예는, 쉘 프로세스 내에서 커맨드-라인을 실행시키는 데에 사용되는 임의의 특정 플랫폼 또는 문법으로부터의 또 다른 추상화 층(another layer of abstraction)을 허용한다.
본 발명은 또한 기능적인 단계들 및/또는 비기능적인 액트들을 포함하는 방법으로 설명될 수 있다. 이하는 본 발명을 실시하는 데에 수행될 수 있는 단계들 및/또는 액트들을 설명한다. 일반적으로, 기능적인 단계들은 달성되는 결과들로 본 발명을 설명하는 반면, 비기능적인 액트들은 특정 결과를 달성하기 위한 좀 더 구체적인 액션들을 설명한다. 기능적인 단계들 및/또는 비기능적인 액트들은 특별한 순서로 설명되거나 또는 청구되지만, 본 발명은 단계들 및/또는 액트들의 임의의 특정 순서(ordering) 또는 조합에 제한될 필요는 없다. 게다가, 청구항의 상술에서 단계들 및/또는 액트들을 사용하는 것은 이러한 용어들의 원하는 특정 사용을 나타내도록 사용된다.
도 2는 본 발명의 각종 예시적인 실시예에 대한 흐름도를 도시한다. 도 2의 이하의 설명은 때때로 도 1a 내지 도 1g의 대응하는 구성요소들을 지칭할 것이다. 이들 도면의 특정 구성요소를 참조할 수 있지만, 이러한 참조는 도시용으로만 사용되며, 명시적으로 청구하지 않는다면, 설명된 실시예의 범위를 제한하거나 또는 그것이 아니라면 범위를 좁히는 것을 의미하는 것은 아니다.
도 2는 예시적인 실시예에 따라 원격 쉘에서 커맨드-라인을 실행시키는 데 사용되는 프로토콜의 흐름도를 도시한다. 도 2의 흐름도는, 흐름도 내의 깊이 및 흐름도의 어느 측(즉, 클라이언트(210) 또는 커맨드-라인 쉘 프로세서(220))이 설명되고 있는지와 같은 것에 따라, 다수의 방법들(예를 들면, 참조번호(200, 205))에 관한 설명을 포함한다. 따라서, 흐름도의 이하의 설명은 임의의 특정 방법에 관한 것이고자 하는 것이 아니라, 이하의 것들, (1) 문자-지향 전송이 아니라 구조 화된 기본 단위로서 커맨드를 전달하는 것 ; (2) 일련의 커맨드들로서 쉘의 일생을 모델링하는 것 ; (3) 문자들이 아니라 특별한 유형의 메시지들로서 쉘의 동작 흐름을 바꾸는 비동기 컨트롤 시그널을 모델링하는 것 ; 및 (4) 전용 입력 및 출력 메시지의 스트림으로서, 즉 커맨드와 입력/출력 스트림을 혼합하지 않고, 클라이언트와 원격 쉘 간의 데이터 교환을 모델링하는 것 중 하나 이상을 수행하는 데 사용되는 실시예를 일반적으로 설명하는 데에 사용된다.
실시예는 쉘을 오픈하기 위한 요청을 전송하고(215)/수신하는(225) 단계를 제공한다. 예를 들면, 클라이언트(105)는 쉘 오픈 요청 메시지(135)를 쉘 프로세서(120)에 전송할 수 있다. 상술된 바와 같이, 세션이 확립되어야만 하는 경우, 실시예는 또한 쉘 식별자를 전송하고(235)/수신하는(230) 단계를 제공한다. 보다 구체적으로는, 쉘 프로세서가 쉘 오픈 메시지(135)를 수신하면, 상술된 바와 같이, 쉘 토큰 또는 식별자(142)를 포함하는 쉘 오픈 응답(140)을 전송할 수 있다. 그 후, 클라이언트 측(210)은 커맨드-라인 쉘 프로세서(220)에 의해 원격으로 실행될 커맨드를 식별하고(240), 이 커맨드를 메시지에 첨부한다(245). 예를 들면, 클라이언트(105)는 커맨드(들)(147)를 식별하고, 이 커맨드를 통상적으로 클라이언트(105)와 떨어져 있는 쉘 프로세서(220)로 전송하기 위해, 커맨드 실행 메시지(145)에 포함시킨다. 쉘 세션이 확립되는 경우, 커맨드 실행 메시지(145) 또한 쉘 식별자(142)를 포함해야 한다는 것을 유의한다.
커맨드-라인 프로세서 측(220)은 메시지(145)를 수신하고(225), 실행을 위해 커맨드(147)를 식별할 수 있다(260). 이후, 커맨드 식별자가 사용되는 경우, 쉘 프로세서(120)는 이러한 식별자(142)를 클라이언트(105)에 전송할 수 있고(265), 클라이언트(105)는 입력을 전송하거나, 또는 그것이 아니라면 본 명세서에서 상술된 바와 같이 커맨드(147)의 실행을 제어하는 데 사용하기 위해 이 식별자(142)를 수신한다(270). 이전에 언급한 바와 같이, 커맨드 식별자(152)는, 다수의 커맨드들(147)의 실행이 단일 세션에서 허용되는지의 여부, 입력/출력이 필요한지의 여부 등과 같은 것들에 좌우되는 예시적인 실시예에 따라, 필요할 수도 있고 필요하지 않을 수도 있다. 예를 들면, 커맨드를 실행시키기 위한 입력(165) 기록이 필요한 경우, 커맨드 식별자(152)(그리고 아마도 쉘 식별자(142))는 스트림된 입력(165)에 포함될 수 있고, 이 스트림된 입력(165)은 쉘 프로세서(120)에 의해 전송되고(275)/수신된다(280). 수신된 입력에 대한 수신확인(acknowledgement)(285)(예를 들면, 오류 코드 등(170))이 전송되어야만(275) 하고, 이 프로세스는 모든 입력 스트림(165)이 쉘 프로세서(120)로 제대로 전송될 때까지(275)/쉘 프로세서(120)에 의해 제대로 수신될 때까지(280) 루핑된다.
커맨드(147) 및 스트림된 입력(165)(만약 있다면)이 일단 적절하게 수신되면, 커맨드-라인 쉘 프로세서 측(220)은 커맨드(들)(147)를 적절하게 실행시킬 수 있다(290). 이와 같이, 출력(165)은 클라이언트(105)로 전송될 수 있고(295)/클라이언트(105)에 의해 수신될 수 있으며(202), 적절한 수신확인(들)은 커맨드-라인 쉘 프로세서(220) 측에 전송될 수 있다(214). 입력 스트림(165)과 마찬가지로, 출력 루프도 모든 출력(160)이 클라이언트(105)에 의해 수신되고/클라이언트(105)로 전송될 때까지 계속되어야 한다.
이전에 언급하고 상술한 바와 같이, 입력(265)과 출력(260) 스트림이 클라이언트(105)와 쉘 프로세서(120) 사이에서 비동기로 그리고 동시에 전송되고/수신될 수 있다. 게다가, 이러한 흐름은 무수한 요인과 수많은 방식에 기초하여 정적으로 또는 동적으로 조정될 수 있다. 예를 들면, 이 흐름은 특정 커맨드(147)에 대한 소정의 양의 출력(160)을 생성하는 데에 필요한 입력(165)의 양에 기초할 수 있고, 및/또는 대역폭 또는 다른 제한에 기초할 수 있다. 게다가, 이 흐름은 힌트 메시지, 컨트롤 설정 또는 다른 공지의 메커니즘을 통해 제어될 수 있다.
사용자가 일단 한 세션을 완료하면, 쉘을 클로즈하기 위한 요청(185)이 커맨드-라인 쉘 프로세서 측(220)으로 전송되거나(204)/커맨드-라인 쉘 프로세서 측(220)에 의해 수신될(208) 수 있고, 그 쉘(120) 세션이 종료되었다는 것을 클라이언트(105)에게 통지하는 수신확인(190)이 클라이언트 측(210)에 전송된다(212). 또한, 다른 실시예에서는 커맨드(147)의 처리 또는 상태를 변경하기 위한 시그널 메시지(175)(예를 들면, 종료, 일시 멈춤, 재개 등)의 배포를 허용한다는 것을 유의한다. 본 명세서에서 설명된 대부분의 기타 메시지들에서와 같이, 이러한 컨트롤 메시지(175)는 시그널 응답(180)을 이용하여 수신확인될(또는 오류가 발생될) 수 있다.
본 발명은 그 취지 또는 핵심 특징을 벗어나지 않고 다른 특별한 형태로 구현될 수 있다. 설명된 실시예는 그 모든 고려사항에 있어, 예시적인 것일 뿐 제한하지 않는 것으로 간주되어야 한다. 그러므로, 본 발명의 범위는 전술된 내용이 아니라 첨부된 청구항에 의해 표시된다. 청구항의 동등물의 의미 및 범위 내에서 의 모든 변경은 청구항의 범위 내에 포함된다.

Claims (20)

  1. 네트워크 컴퓨팅 환경의 원격 장치에서, 쉘(shell)을 일련의 커맨드들(a series of commands)에 바인딩하기 위해, 바인딩 메커니즘을 데이터의 이진 스트림보다는 메시지 내에 제공함으로써 커맨드-라인 쉘 처리 세션(command-line shell processing session)을 확립하는 방법으로서,
    원격 커맨드-라인 쉘 프로세서에서 쉘을 오픈하기 위한 요청 메시지를 수신하는 단계;
    상기 쉘을 오픈하는 단계;
    상기 쉘이 오픈된 것이 확인되면, 커맨드들을 실행을 위해 상기 쉘로 전달하는(transfer) 데에 사용하는 바인딩 메커니즘(binding mechanism)을 제공하는 오픈 쉘 응답 메시지를 상기 원격 커맨드-라인 쉘 프로세서로부터 송신하는 단계; 및
    커맨드를 실행시키기 위한 실행 요청 메시지(execution request message)를 수신하는 단계 - 상기 실행 요청 메시지는 한 단위로서(as a unit)의 상기 커맨드와 상기 바인딩 메커니즘을 포함함 - 를 포함하되,
    상기 실행 요청 메시지와 상기 바인딩 메커니즘은 각각 일정한 자원 식별자들(uniform resource identifiers)에 의해 표현되고,
    상기 실행 요청 메시지는 복수의 커맨드들을 포함할 수 있으며, 클라이언트와 상기 원격 커맨드-라인 쉘 프로세서 사이의 데이터 교환은 상기 복수의 커맨드들 중 하나 이상으로부터 분리된 전용 입력 메시지들 및 전용 출력 메시지들의 하나 이상의 데이터 스트림을 포함하고, 상기 전용 입력 메시지들은 상기 원격 커맨드-라인 쉘 프로세서에 의해 수신되고 상기 전용 출력 메시지들은 상기 원격 커맨드-라인 쉘 프로세서에서 하나 이상의 커맨드들의 실행 결과로서 상기 원격 커맨드-라인 쉘 프로세서에 의해 송신되는
    커맨드-라인 쉘 처리 세션 확립 방법.
  2. 제1항에 있어서,
    상기 바인딩 메커니즘은 쉘 식별자(shell identifier), 쉘 토큰(shell token) 또는 둘 다인
    커맨드-라인 쉘 처리 세션 확립 방법.
  3. 제1항에 있어서,
    상기 수신된 실행 요청 메시지에 응답하여,
    상기 커맨드의 실행에 관련된 입력, 출력 또는 기타 시그널 메시지들을 식별하는 데에 사용하는 커맨드 식별자(command identifier)를 포함하는 응답 메시지를 송신하는 단계를 더 포함하는
    커맨드-라인 쉘 처리 세션 확립 방법.
  4. 제3항에 있어서,
    상기 응답 메시지는 상기 커맨드의 실행에 대한 상태 보고(status report)를 포함하는
    커맨드-라인 쉘 처리 세션 확립 방법.
  5. 제1항에 있어서,
    상기 커맨드는 상기 커맨드-라인 쉘 프로세서에서의 실행을 위한 입력을 필요로 하고, 상기 입력은 상기 실행 메시지와는 별도의 하나 이상의 데이터 스트림으로서 수신되며, 상기 입력은 상기 바인딩 메커니즘 및 커맨드 식별자 둘 다를 포함하는
    커맨드-라인 쉘 처리 세션 확립 방법.
  6. 제1항에 있어서,
    상기 커맨드의 실행은 출력을 생성하고, 상기 출력은 상기 바인딩 메커니즘 및 커맨드 식별자 둘 다를 포함하는 하나 이상의 데이터 스트림으로서 클라이언트에 송신되는
    커맨드-라인 쉘 처리 세션 확립 방법.
  7. 제1항에 있어서,
    상기 커맨드의 실행이 종료되고(terminated), 일시 멈춤되고(paused), 재개되고(resumed), 빠져나오고(exited) 또는 지연되도록(delayed), 쉘 동작 흐름(shell operation flow)을 변경하기 위한, 상기 바인딩 메커니즘과 커맨드 식별자 둘 다를 포함하는 하나 이상의 비동기 시그널 메시지들(one or more asynchronous signal messages)을 수신하는 단계를 더 포함하는
    커맨드-라인 쉘 처리 세션 확립 방법.
  8. 제1항에 있어서,
    상기 커맨드는 입력 스트림을 필요로 하고, 상기 커맨드의 실행은 출력 스트림을 생성하고, 상기 입력 스트림에 대한 흐름 레이트(a rate of flow for the input stream)는 상기 출력 스트림에 대한 흐름 레이트에 비례하여 동적으로 조정되는
    커맨드-라인 쉘 처리 세션 확립 방법.
  9. 네트워크 컴퓨팅 환경의 클라이언트 장치에서, 데이터의 이진 스트림보다는 메시지를 이용하여 일련의 커맨드들을 원격 쉘에 바인딩하는 바인딩 메커니즘을 이용함으로써 커맨드들에 대한 원격 처리 세션을 확립하는(establishing) 방법으로서,
    원격 커맨드-라인 쉘 프로세서에서 쉘을 오픈하기 위한 요청 메시지를 송신하는 단계;
    상기 쉘이 오픈된 것이 확인되면, 상기 커맨드들을 실행을 위해 상기 쉘로 전달하는 데에 사용하는 바인딩 메커니즘을 포함하는 오픈 쉘 응답 메시지를 상기 원격 커맨드-라인 프로세서로부터 수신하는 단계; 및
    커맨드를 실행시키기 위한 실행 요청 메시지를 송신하는 단계 - 상기 실행 요청 메시지는 한 단위로서의 상기 커맨드와 상기 바인딩 메커니즘을 포함함 - 를 포함하되,
    상기 요청 메시지 및 상기 바인딩 메커니즘은 일정한 자원 식별자들에 의해 표현되고,
    상기 실행 요청 메시지는 복수의 커맨드들을 포함할 수 있으며, 클라이언트 장치와 상기 원격 커맨드-라인 쉘 프로세서 사이의 데이터 교환은 상기 복수의 커맨드들 중 하나 이상으로부터 분리된 전용 입력 메시지들 및 전용 출력 메시지들의 하나 이상의 데이터 스트림을 포함하고, 상기 전용 입력 메시지들은 상기 클라이언트 장치에 의해 송신되고 상기 전용 출력 메시지들은 상기 원격 커맨드-라인 쉘 프로세서에서 하나 이상의 커맨드들의 실행 결과로서 상기 클라이언트 장치에 의해 수신되는
    커맨드용 원격 처리 세션 확립 방법.
  10. 제9항에 있어서,
    상기 바인딩 메커니즘은 쉘 식별자, 쉘 토큰 또는 둘 다인
    커맨드용 원격 처리 세션 확립 방법.
  11. 제9항에 있어서,
    상기 송신된 실행 요청 메시지에 응답하여,
    상기 커맨드의 실행에 관련된 입력, 출력 또는 기타 시그널 메시지들을 식별하는 데에 사용하는 커맨드 식별자를 포함하는 응답 메시지를 수신하는 단계를 더 포함하는
    커맨드용 원격 처리 세션 확립 방법.
  12. 제11항에 있어서,
    상기 응답 메시지는 상기 커맨드의 실행에 대한 상태 보고를 포함하는
    커맨드용 원격 처리 세션 확립 방법.
  13. 제9항에 있어서,
    상기 커맨드는 상기 쉘에서의 실행을 위한 입력을 필요로 하고, 상기 입력은 상기 실행 메시지와는 별도의 하나 이상의 데이터 스트림으로서 송신되며, 상기 입력은 상기 바인딩 메커니즘 및 커맨드 식별자 둘 다를 포함하는
    커맨드용 원격 처리 세션 확립 방법.
  14. 제9항에 있어서,
    상기 커맨드의 실행은 출력을 생성하고, 상기 출력은 상기 바인딩 메커니즘 및 커맨드 식별자 둘 다를 포함하는 하나 이상의 데이터 스트림으로서 클라이언트에서 수신되는
    커맨드용 원격 처리 세션 확립 방법.
  15. 제9항에 있어서,
    상기 커맨드의 실행이 종료되고, 일시 멈춤되고, 재개되고, 빠져나오고 또는 지연되도록, 상기 쉘 동작 흐름을 변경하기 위한, 상기 바인딩 메커니즘과 커맨드 식별자 둘 다를 포함하는 하나 이상의 비동기 시그널 메시지들을 송신하는 단계를 더 포함하는
    커맨드용 원격 처리 세션 확립 방법.
  16. 제9항에 있어서,
    상기 커맨드는 입력 스트림을 필요로 하고, 상기 커맨드의 실행은 출력 스트림을 생성하고, 상기 입력 스트림에 대한 흐름 레이트는 상기 출력 스트림에 대한 흐름 레이트에 비례하여 동적으로 조정되는
    커맨드용 원격 처리 세션 확립 방법.
  17. 네트워크 컴퓨팅 환경의 원격 장치에서, 쉘을 일련의 커맨드들에 바인딩하기 위해, 바인딩 메커니즘을 데이터의 이진 스트림보다는 메시지 내에 제공함으로써 커맨드-라인 쉘 처리 세션을 확립하는 방법을 구현하는 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 실행가능 명령어는 프로세서에 의해 실행되는 경우에 상기 원격 장치로 하여금,
    원격 커맨드-라인 프로세서에서 쉘을 오픈하기 위한 요청 메시지를 수신하는 단계;
    상기 쉘을 오픈하는 단계;
    상기 쉘이 오픈된 것이 확인되면, 커맨드들을 실행을 위해 상기 쉘로 전달하는 데에 사용하는 바인딩 메커니즘을 제공하는 오픈 쉘 응답 메시지를 상기 원격 커맨드-라인 쉘 프로세서로부터 송신하는 단계; 및
    커맨드를 실행시키기 위한 실행 요청 메시지를 수신하는 단계 - 상기 실행 요청 메시지는 한 단위로서의 상기 커맨드와 상기 바인딩 메커니즘을 포함함 - 를 수행하게 하고,
    상기 요청 메시지와 상기 바인딩 메커니즘은 각각 일정한 자원 식별자들에 의해 표현되고,
    상기 실행 요청 메시지는 복수의 커맨드들을 포함할 수 있으며, 클라이언트와 상기 원격 커맨드-라인 쉘 프로세서 사이의 데이터 교환은 상기 복수의 커맨드들 중 하나 이상으로부터 분리된 전용 입력 메시지들 및 전용 출력 메시지들의 하나 이상의 데이터 스트림을 포함하고, 상기 전용 입력 메시지들은 상기 원격 커맨드-라인 쉘 프로세서에 의해 수신되고 상기 전용 출력 메시지들은 상기 원격 커맨드-라인 쉘 프로세서에서 하나 이상의 커맨드들의 실행 결과로서 상기 원격 커맨드-라인 쉘 프로세서에 의해 송신되는
    컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서,
    상기 바인딩 메커니즘은 쉘 식별자, 쉘 토큰 또는 둘 다인
    컴퓨터 판독가능 저장 매체.
  19. 제17항에 있어서,
    상기 수신된 실행 요청 메시지에 응답하여, 상기 커맨드-라인 프로세서로 하여금 상기 커맨드의 실행에 관련된 입력, 출력 또는 기타 시그널 메시지들을 식별하는 데에 사용하는 커맨드 식별자를 포함하는 응답 메시지를 송신하는 단계를 수행하게 하는 컴퓨터 실행가능 명령어를 더 포함하는
    컴퓨터 판독가능 저장 매체.
  20. 제17항에 있어서,
    상기 커맨드는 상기 커맨드-라인 쉘 프로세서에서의 실행을 위한 입력을 필요로 하고, 상기 입력은 상기 실행 메시지와는 별도의 하나 이상의 데이터 스트림으로서 수신되며, 상기 입력은 상기 바인딩 메커니즘 및 커맨드 식별자 둘 다를 포함하는
    컴퓨터 판독가능 저장 매체.
KR1020087019195A 2006-02-16 2007-01-19 커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을확립하는 방법 KR101292442B1 (ko)

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
KR20080093117A KR20080093117A (ko) 2008-10-20
KR101292442B1 true KR101292442B1 (ko) 2013-07-31

Family

ID=38370084

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087019195A KR101292442B1 (ko) 2006-02-16 2007-01-19 커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을확립하는 방법

Country Status (5)

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

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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000010691A (ko) * 1996-05-24 2000-02-25 포만 제프리 엘 컴퓨터 네트워크에서의 통신 접속 장치 및 방법

Family Cites Families (68)

* 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
US5528503A (en) * 1993-04-30 1996-06-18 Texas Instruments Incoporated Integrated automation development system and method
US5764228A (en) 1995-03-24 1998-06-09 3Dlabs Inc., Ltd. Graphics pre-processing and rendering system
AU5522396A (en) 1995-03-29 1996-10-16 Ericsson Inc. Console dispatch in an extended multisite radio communicatio ns network
JPH09231156A (ja) * 1996-02-28 1997-09-05 Nec Corp プログラム受信機能付遠隔実行装置
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
JP3738624B2 (ja) * 1999-10-26 2006-01-25 日本電気株式会社 分散アプリケーション制御システム及び制御方法並びにプログラムを記録した記録媒体
US20020186255A1 (en) * 1999-10-28 2002-12-12 Shafron Thomas Joshua Method and system of facilitating on-line shopping using an internet browser
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
AU2002230777A1 (en) * 2000-11-01 2002-05-27 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
US7284233B2 (en) 2003-01-27 2007-10-16 Bea Systems Inc. Integrated development environment 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
US7734690B2 (en) * 2003-09-05 2010-06-08 Microsoft Corporation Method and apparatus for providing attributes of a collaboration system in an operating system folder-based file system
US7418472B2 (en) * 2003-09-30 2008-08-26 Microsoft Corporation Systems and methods for determining remote device media capabilities
US7457872B2 (en) 2003-10-15 2008-11-25 Microsoft Corporation On-line service/application monitoring and reporting system
US7770181B2 (en) * 2004-01-16 2010-08-03 Microsoft Corporation System and method for transferring computer-readable objects across a remote boundary
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
US8566806B2 (en) * 2005-03-04 2013-10-22 Microsoft Corporation Command-line data-type discovery and conversion
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 (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000010691A (ko) * 1996-05-24 2000-02-25 포만 제프리 엘 컴퓨터 네트워크에서의 통신 접속 장치 및 방법

Also Published As

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

Similar Documents

Publication Publication Date Title
US8090838B2 (en) Shell operation flow change
US11422778B2 (en) Development environment for real-time dataflow programming language
CN106254423B (zh) 基于微服务架构实现Restful服务快速发布的方法
US7707564B2 (en) Systems and methods for creating network-based software services using source code annotations
US8543869B2 (en) Method and system for reconstructing error response messages under web application environment
US20080209405A1 (en) Distributed debugging for a visual programming language
CN111831538B (zh) 调试方法、装置以及存储介质
Pedrosa et al. Analyzing protocol implementations for interoperability
US8671199B2 (en) Converged call flow modeling and converged web service interface design
US8819286B2 (en) Methods, systems, and apparatus for processing messaging data sets using structured data sets
KR101292442B1 (ko) 커맨드-라인 쉘 처리 세션 확립 방법과 이를 구현하는컴퓨터 프로그램 제품, 및 커맨드용 원격 처리 세션을확립하는 방법
WO2008049813A1 (en) Extending web service description language for sip/call flow interactions
US8196107B2 (en) Simulating stepping through interpreted code
Pasquali Mastering Node. js
US20080104237A1 (en) Auto-generation or auto-execution of web service description language call flow implementation
Kalali et al. Developing RESTful services with JAX-RS 2.0, WebSockets, and JSON
Williams et al. Expert Twisted: Event-Driven and Asynchronous Programming with Python
Simonsen et al. Towards a CPN-based modelling approach for reconciling verification and implementation of protocol models
Wang et al. The websocket api
Deinum et al. Securing Spring WebFlux Applications

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6