[英]Executing an interactive shell script remotely from a web GUI
我的项目中需要通过Web GUI远程执行交互式shell脚本。 这意味着打印到脚本的标准输出的内容必须在GUI上可用,并且用户输入必须从GUI提取并写入脚本的标准输入。
我的问题是(a)这是一个好主意吗(暂时搁置这是一个必要条件)? (b)有人解决过这种问题吗? 如果是,执行此操作的“最佳”方法是什么?
编辑#1:要执行的脚本与Web服务器不在同一主机上。
编辑#2:
感谢您的回复! 恐怕浏览器端的解决方案不符合我的目的,因为用户可以启动一个或多个脚本,可以关闭浏览器,过一段时间后再回来查看脚本的输出并提供输入。
我提出的设计涉及将脚本的输出存储到不同的文件中,当用户启动浏览器时,它开始从文件中读取并继续轮询(通过Ajax),直到脚本执行完毕。
似乎您需要某种后台程序才能使其正常工作。 您无法通过单个脚本来执行此操作,因为在运行此类脚本时-浏览器认为它正在加载页面。 如果花费的时间比预期的长,它将中止并声明。 “服务器花了太长时间才能响应”
因此,实际上,您需要生成/分叉一个单独的进程,并定期从客户端向服务器发出请求,这将导致服务器端脚本连接到该进程并与其交换消息。
例如,参见phpterm 。
听起来像CGI
也许您有理由不考虑它,但是服务器中基于Web的外壳又如何呢? 例如AjaxTerm( http://antony.lesuisse.org/software/ajaxterm/ )
我记得,您可以配置它可以登录的用户帐户,然后可以应用通常的控件来限制用户可以运行的脚本(或chroot?)。
毕竟,如果要运行Shell脚本,为什么不使用Shell? :)
您可以使用Expect模仿用户,作为nohup或后台作业开始该过程,然后注销,然后定期重新登录对其日志文件的检查或提供输入。
这可能不是一个好主意。 交互式shell脚本通常不通过网页执行...
但是当然有可能。
而是考虑您要完成的工作,并制作一个由标准Web组件组成的漂亮UI。 也许您可以构建像“向导”一样的东西?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.