2009-03-03 91 views
2

我的项目需要通过Web GUI远程执行交互式shell脚本。这意味着打印到脚本标准输出的东西必须在GUI上可用,用户输入必须从GUI中获取并写入脚本的标准输入。从Web GUI远程执行交互式shell脚本

我的问题是 (a)这是一个好主意(暂时搁置它是一个需求)吗? (b)以前有人解决过这类问题吗?如果是,那么最好的方法是什么?

编辑#1:要执行的脚本与Web服务器不在同一个主机上。

编辑#2:

感谢您的回应!恐怕浏览器端的解决方案不适合我的目的,因为用户可以启动一个或多个脚本,关闭浏览器,在某些时候回来检查脚本的输出并提供输入。

我提出的设计涉及将脚本的输出存储到不同的文件,并且当用户启动浏览器时,它开始从文件中读取数据,并持续轮询它(通过Ajax),直到脚本完成执行。

回答

1

听起来像CGI

0

这可能不是一个好主意。交互式shell脚本通常不通过网页执行...

但当然这是可能的。

改为想要完成什么,并制作一个由标准Web组件组成的漂亮UI。也许你可以创建一个像“巫师”一样的东西?

2

好像你需要某种后台进程才能工作。你不能从单个脚本来完成,因为当这样的脚本运行时 - 浏览器认为它正在加载页面。如果这需要比预期更长的时间,它会中止并说明这一点。 “服务器花了很长时间来响应”

所以实际上你需要产生/分叉一个单独的进程,并定期向客户端请求服务器,这将导致服务器端脚本连接到进程和交换消息与它。

例如参见phpterm

1

也许你有理由不考虑它,但基于web的shell到服务器呢?例如AjaxTerm(http://antony.lesuisse.org/software/ajaxterm/

我记得,您可以配置它可以登录的用户帐户,然后您可以应用常规控件来限制用户可以运行的脚本(或chroot?)。

毕竟,如果你想运行一个shell脚本,为什么不使用shell? :)

0

您可以使用Expect来模拟用户启动进程作为nohup或后台作业,注销,然后定期重新检查其日志文件或提供输入。