Удаленное выполнение сценария интерактивной оболочки из веб-интерфейса - PullRequest
2 голосов
/ 03 марта 2009

В моем проекте есть требование удаленного выполнения сценариев интерактивной оболочки через веб-интерфейс. Это означает, что материал, напечатанный на стандартный вывод скрипта, должен быть доступен в графическом интерфейсе, а пользовательский ввод должен быть взят из графического интерфейса и записан на стандартный ввод скрипта.

Мои вопросы а) Является ли это хорошей идеей (откладывая на данный момент тот факт, что это требование)? б) Кто-нибудь решал подобные проблемы раньше? Если да, каков наилучший способ это сделать?

РЕДАКТИРОВАТЬ # 1: Сценарии, которые должны быть выполнены, не находятся на том же хосте, что и веб-сервер.

РЕДАКТИРОВАТЬ # 2:

Спасибо за ваши ответы! Я боюсь, что решения на стороне браузера не будут соответствовать моей цели, потому что пользователь может запустить один или несколько сценариев, закрыть браузер, через некоторое время вернуться, чтобы проверить выходные данные сценариев и обеспечить ввод.

Дизайн, который я придумал, включает в себя сохранение выходных данных сценариев в разных файлах, и когда пользователь запускает браузер, он начинает читать из файлов и продолжает опрашивать его (через Ajax), пока сценарии не завершат выполнение .

Ответы [ 5 ]

2 голосов
/ 03 марта 2009

Похоже, вам нужен какой-то фоновый процесс, чтобы это работало. Вы не можете сделать это из одного скрипта, потому что во время работы такого скрипта браузер думает, что он загружает страницу. Если это занимает больше времени, чем ожидалось, оно прерывается и заявляет об этом. «Сервер слишком долго отвечал»

Таким образом, на самом деле вам нужно порождать / форкать отдельный процесс и периодически отправлять запросы со стороны клиента на сервер, что приведет к подключению серверного скрипта к процессу и обмену сообщениями с ним.

См., Например, phpterm .

1 голос
/ 04 марта 2009

Возможно, у вас есть причины не рассматривать это, но как насчет веб-оболочки на сервере? например AjaxTerm (http://antony.lesuisse.org/software/ajaxterm/)

Насколько я помню, вы можете настроить, под какой учетной записью он может войти, а затем вы можете применить обычные элементы управления для ограничения того, какие сценарии может запускать пользователь (или chroot?).

В конце концов, если вы хотите запустить скрипт оболочки, почему бы не использовать оболочку? :)

1 голос
/ 03 марта 2009

звучит как CGI

0 голосов
/ 20 октября 2010

Вы можете использовать Ожидать , чтобы имитировать пользователя, запускающего процесс как nohup или фоновое задание, выходящего из системы, а затем периодически возвращающегося к проверке его файлов журнала или предоставлению ввода.

0 голосов
/ 03 марта 2009

Вероятно, это не очень хорошая идея. Сценарии интерактивной оболочки обычно не выполняются через веб-страницы ...

но, конечно, это возможно.

Вместо этого подумайте о том, чего вы хотите достичь, и создайте приятный интерфейс, который состоит из стандартных веб-компонентов. Может быть, вы могли бы создать что-то, что работает как «волшебник»?

...