2009-03-03 3 views
2

웹 GUI를 통해 대화 형 셸 스크립트를 원격으로 실행해야한다는 요구 사항이 있습니다. 즉, 스크립트의 표준 출력에 인쇄 된 내용을 GUI에서 사용할 수 있어야하고 사용자 입력을 GUI에서 가져 와서 스크립트의 표준 입력에 기록해야합니다.웹 GUI에서 원격으로 대화 형 셸 스크립트 실행

제 질문은 입니다. (a) 이것은 좋은 생각입니까? (b) 누군가가 전에 이런 종류의 문제를 해결 했습니까? 그렇다면 '최선의 방법'은 무엇일까요?

EDIT # 1 : 실행될 스크립트가 웹 서버와 동일한 호스트에 있지 않습니다.

편집 # 2 :

답해 주셔서 감사합니다. 사용자가 하나 이상의 스크립트를 시작하고, 브라우저를 닫고, 언젠가 스크립트의 출력을 확인하고 입력을 제공하기 위해 돌아올 수 있기 때문에 브라우저 측 솔루션이 내 용도에 맞지 않을까 걱정됩니다.

나는 스크립트의 출력을 다른 파일에 저장하는 것과 관련하여 사용자가 브라우저를 실행하면 파일에서 읽기를 시작하고 스크립트가 완료 될 때까지 (Ajax를 통해) 폴링을 계속한다. 실행 중.

답변

1

CGI와 같은 소리

0

아마도 좋은 생각이 아닙니다. 대화 형 쉘 스크립트는 일반적으로 웹 페이지를 통해 실행되지 않습니다 ...

물론 가능합니다.

대신 표준 웹 구성 요소로 구성된 멋진 UI를 만들고 싶다고 생각하십시오. 어쩌면 당신은 "마법사"처럼 작동하는 무언가를 만들 수 있습니까?

2

이 작업을 수행하려면 백그라운드 프로세스가 필요합니다. 스크립트가 실행되는 동안 브라우저가 페이지를로드한다고 생각하기 때문에 단일 스크립트에서이 작업을 수행 할 수 없습니다. 이것이 예상보다 오래 걸리면 중단되고 진술됩니다. "서버가 응답하는 데 너무 오래 걸렸습니다."

실제로 별도의 프로세스를 생성/포크하고 클라이언트 측에서 서버로 정기 요청을해야 서버 측 스크립트가 프로세스와 교환에 연결됩니다 메시지. 예 : phpterm을 참조하십시오.

1

아마도 고려하지 않을 이유가있을 것입니다. 그러나 웹 기반 셸은 서버에 대해 어떨까요? 예 : AjaxTerm (http://antony.lesuisse.org/software/ajaxterm/) 내 기억으로

, 당신은 그것을로 로그인 할 수있는 사용자 계정을 구성 할 수 있습니다, 그리고 당신은 사용자가 실행할 수 무엇 스크립트 제한하는 일반적인 컨트롤을 적용 할 수 있습니다 (또는 chroot를?).

결국 쉘 스크립트를 실행하고 싶다면 쉘을 사용하지 않을까요? :)

0

nohup 또는 백그라운드 작업으로 프로세스를 시작한 사용자를 모방하여 로그 아웃 한 다음 정기적으로 다시 로그 파일에 체크인하거나 입력을 제공하는 데 Expect을 사용할 수 있습니다.