在网页上运行现有的CLI程序



这一定是解决问题的问题,但是谷歌搜索没有找到答案。

我有一个现有的程序,其中具有交互式,仅文本的命令行接口。我想在Web服务器上运行此程序,以便每个会话都会获得CLI程序的唯一会话,并且每次命令键入网页时,相应的响应都会收回。

我sorta-kinda知道该程序每次都新鲜运行;我正在寻找的是如何执行此操作,以使程序保持运行(大概是在自己的过程中),并且网页获取更新。

它将在Linux盒子上。安全提示将很有帮助 - 我希望我可以作为一个用户运行该程序本身,该用户量身定制了足够的特权来实际运行,但尽可能少,否则可以防止黑客进入。

尝试https://seashells.io/

贝壳使您可以实时从命令行程序输出输出到网络,即使无需在计算机上安装任何新软件。您可以使用它来监视长期运行的过程,例如将进度打印到控制台的实验。您也可以使用贝壳与朋友共享输出!

$ echo 'Hello, Seashells!' | nc seashells.io 1337
serving at https://seashells.io/v/{random url}

其他解释贝壳的文章

另一种选择,如果您只想查看命令的结果,则可以使用websocketd

您可以使用以下方式:

https://www.tecmint.com/shell-in-in-a-box-a-web基于ssh-terminal to-to-Access-remote-linux-servers/

然后,您需要配置具有有限权利的用户,该用户会自动启动所需的应用程序。在执行此操作之前,请确保了解Linux安全性。:)

这是一些有关限制SSH会话的信息,您可能会发现对此目标有用:

http://www.linuxjournal.com/article/8257

看起来至少一个部分答案只是基本的linux- ness:我偶然发现了命名的管道(我,dangit!)。测试后,我可以设置一对管道,然后以

运行我的命令
tail -f in_pipe.fifo | my_command > out_pipe.fifo

然后,瞬态命令只需要打开相关管道,与它们交谈,关闭和退出。我仍然需要管理上述命令的寿命(毫无疑问,计时器将涉及到魔术),但这是另一个发帖的问题。

在这一点上,我可以打开三个终端窗口:一个带有上述命令运行,一个运行tail -f out_pipe.fifo的命令,另一个键入echo line of input > in_pipe.fifo的内容,这一切都可以。我敢肯定(a)我可以从这里解决这个问题,(b)会很丑。

我确实必须进入程序的源代码,并确保在C代码中刷新输出缓冲区(使用FFLUSH(stdout))。(我正在通过一些老式的源代码工作;此时,我正在尝试完成最小的工作量以使其编译和运行 - 每行更改都是错误的机会,我尚不熟悉使用此代码库)。

最新更新