首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从web界面执行linux命令(就像在Django CMS演示生成器中一样)

从web界面执行linux命令(就像在Django CMS演示生成器中一样)
EN

Stack Overflow用户
提问于 2012-05-20 12:42:38
回答 2查看 1.5K关注 0票数 0

我需要创建一个网页,将产生类似于https://django-cms.org/en/demo/的演示。要生成演示,只需单击Get your demo!

我不介意的语言,PHP或任何东西,只要自由和开放源码。

单击该按钮时,它将运行/var/testing/makesite.sh

makesite.sh内部,它的代码是urlnya="$thegeneratedurl"

如果我们运行echo http://$urlnya/,它将像http://site1045.demosite.com/一样显示完整的URL。

演示网站生成后,我需要它的显示链接

有一些shell_exec的例子来实现这一点,但我害怕如果它不是真的安全,我不知道如何显示进度和返回演示网址就像在Django CMS网站。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-20 16:14:22

在python中,您可以使用subprocessenvoy来执行GNU/Linux命令。您也可以使用fabric来完成此操作。

为了实现这一点,您可能需要学习如何使用virtualenv,并且必须为每个应用程序创建唯一的port no

这应该单独写一篇错误的文章。我不能写完整的源代码,尽管它很有趣。

对于url部分,建议您使用随机subdomain或不同的想法。您可能需要在数据库中存储以前生成的所有值的列表,或者检查当前运行的演示站点以避免冲突。

References

http://docs.python.org/library/subprocess.html

https://github.com/kennethreitz/envoy

http://pypi.python.org/pypi/virtualenv

http://docs.fabfile.org/en/1.4.2/index.html

票数 0
EN

Stack Overflow用户

发布于 2012-05-23 01:02:45

shell_exec()可能出现的问题与使用它无关。可怕的风险是让你的用户指定输入的字符串-字符串可能偶尔包括各种奇怪的尝试,以“愚弄”你的系统并侵入它。但你不需要这样做。只要您在自己的代码中构造输入的字符串,就不会有任何问题。

该字符串应该与您在Linux shell提示符下键入的内容完全相同。根据脚本所需内容的详细信息,启动脚本的字符串可能类似于“/usr/local/bin/makeite.sh”。或者,它也可能包含一些参数,比如“/usr/local/bin/makeite.sh --ownername clientsname”。如果有参数,请在您编写的代码中自己替换它们,而不是要求用户将它们替换为您-这样安全风险就最小。

makesite.sh中"echo $urlnya“的结果{以及shell_exec()命令的所有其他输出}将由shell_exec()以文本块的形式传递给您,以便您随心所欲地处理。你的代码可以解析它,在你自己的网页中使用它的一小部分,在内部跟踪它的一小部分,提取某种唯一的ID,等等。例如,您可能希望在您正在制作的网页上放置一个指向该URL的超链接,放在一个标记为{请参阅创建的网页}的按钮后面。

对于进度条,获取一个提供该功能的小部件或库(但请参阅后面的几个段落:-)。这样做的方式有点奇怪,而且跨浏览器的问题可能会很严重,所以进度条是利用其他人的封装和功能测试是一个非常好的想法的事情之一。我相信雅虎提供了一个库,我相信JQuery也包含了这个功能。

本地浏览器/客户端将一遍又一遍地操作进度条,无论它选择几秒钟,然后与服务器“重新同步”,以便显示准确的信息。例如,人们有时会看到移动的条纹;这种移动可能纯粹是局部的,纯粹是“猜测”。但由于页面将在几秒钟内与服务器“重新同步”以重新调整其长度(甚至在出现问题时完全停止条纹),这应该就足够了。

不过,显示进度条只是问题的一部分。更大的问题是显示什么。系统上的某些东西需要能够说“我已经完成了55%”这样的话。但我不知道makesite.sh是如何做到这一点的。我不知道Linux内置了什么功能来帮助生成这样的信息。您可能需要自己多次运行该命令,以查看需要多长时间以及里程碑是什么,然后创建一些自己的跟踪程序来检查这些里程碑。这可能会带来比它值得的更多的麻烦。相反,你可能希望创建一些更简单的东西,比如一些近乎大脑死亡的文本,比如“粗略估计安装完成时间再过2分钟”或“安装失败,请再试一次”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10670829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档