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

时间:2017-12-24 00:01:00

标签: php apache dynamic-websites

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

我有一个带有交互式纯文本命令行界面的现有程序。我希望在Web服务器上运行此程序,以便每个会话获得CLI程序的唯一会话,并且每次在网页中键入命令时都会发回相应的响应。

我有点知道如果程序每次运行都是如何执行此操作;我正在寻找的是如何做到这一点,以便程序继续运行(可能在自己的过程中),并且网页得到更新。

它将在Linux机器上。安全提示会有所帮助 - 我希望我可以将程序本身作为一个用户进行定制,以便拥有足够的权限来实际运行,但尽可能少地阻止黑客获取英寸

3 个答案:

答案 0 :(得分:0)

你可以用这个:

https://www.tecmint.com/shell-in-a-box-a-web-based-ssh-terminal-to-access-remote-linux-servers/

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

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

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

答案 1 :(得分:0)

看起来至少部分答案只是基本的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))。 (我正在使用一些老式的源代码;此时我正在尝试进行最少量的工作以使其编译和运行 - 每一行更改都是错误的机会,我还不熟悉使用此代码库。)

答案 2 :(得分:0)

尝试https://seashells.io/

即使没有在计算机上安装任何新软件,Seashells仍可将从命令行程序的输出实时传输到Web。您可以使用它来监视长时间运行的过程,例如将进度打印到控制台的实验。您还可以使用Seashells与朋友共享输出!

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

其他介绍seashells

的文章

如果您只想查看命令的结果,则可以使用websocketd