User interface 从web GUI远程执行交互式shell脚本

User interface 从web GUI远程执行交互式shell脚本,user-interface,shell,scripting,interactive,User Interface,Shell,Scripting,Interactive,我的项目要求通过web GUI远程执行交互式shell脚本。这意味着打印到脚本标准输出的内容必须在GUI上可用,用户输入必须从GUI获取并写入脚本的标准输入 我的问题是 (a) 这是一个好主意吗(暂时不考虑这是一个要求)? (b) 以前有人解决过这种问题吗?如果是,什么是最好的方法 编辑#1:要执行的脚本与web服务器不在同一主机上 编辑#2: 谢谢你的回复!我担心浏览器端解决方案不符合我的目的,因为用户可以启动一个或多个脚本,可以关闭浏览器,稍后回来检查脚本的输出并提供输入 我提出的设计涉及到

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

我的问题是 (a) 这是一个好主意吗(暂时不考虑这是一个要求)? (b) 以前有人解决过这种问题吗?如果是,什么是最好的方法

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

编辑#2:

谢谢你的回复!我担心浏览器端解决方案不符合我的目的,因为用户可以启动一个或多个脚本,可以关闭浏览器,稍后回来检查脚本的输出并提供输入


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

听起来像CGI

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

但这当然是可能的


相反,请考虑您想要完成什么,并创建一个由标准web组件组成的漂亮UI。也许你可以构建一个像“向导”一样工作的东西?

似乎你需要某种后台流程才能工作。您无法从单个脚本执行此操作,因为当这样一个脚本正在运行时,浏览器会认为它正在加载页面。如果这比预期的时间长,它将中止并声明。“服务器响应时间过长”

因此,实际上您需要生成/派生一个单独的进程,并定期从客户端向服务器发出请求,这将导致服务器端脚本连接到该进程并与其交换消息


例如,

也许你有理由不考虑它,但是一个基于Web的shell如何进入服务器呢?e、 g.AjaxTerm()

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

毕竟,如果要运行shell脚本,为什么不使用shell呢?:)

您可以使用来模拟用户以nohup或后台作业的形式启动流程,注销,然后定期重新登录,检查其日志文件或提供输入