python Web应用程序如何在客户端计算机上打开程序?

时间:2012-10-13 23:18:02

标签: python linux web

我将使用python构建基于Web的资产管理系统来管理短cg电影的制作。该应用程序将基于Intranet在本地网络上的centos机器上运行。我希望你能够浏览所有资产和镜头,然后在客户机上的相应程序中打开它们(也运行centos)。我猜测在客户端必须进行某种设置以允许应用程序运行命令,这很好,因为我可以访问将要使用它的所有客户端(尽管我不知道)有root访问权限)。这种事情有可能吗?

3 个答案:

答案 0 :(得分:1)

请注意,这不是标准方式。想象一下,当您访问或点击某些内容时,那里的网站可以随意打开记事本或扫雷。

完成它的方式是,您需要在客户端计算机上运行一项服务,该服务可以公开某些api并信任来自Web应用程序调用的请求。这需要始终在客户端计算机上运行,​​并且在您的Web应用程序中,您可以向此服务发送请求以启动您所需的应用程序。

答案 1 :(得分:1)

正如您已经猜到的那样,您需要在客户端PC上运行正在侦听预定端口的服务。

当客户端请求打开资产时,您的webapp会将请求发送到正在运行的服务以下载资产并运行它。只要你的端口没有。在1024以上并且您没有运行任何需要root访问权限的应用程序,您可以在没有root的情况下运行此服务。

但这是一个非常糟糕的主意,因为它暴露了客户端的恶意攻击。您必须确保对客户端服务的所有请求都已正确签名,并且客户端在执行之前会验证每个请求是否有效。根据您对客户端服务的实现,您可能需要考虑许多其他安全因素。但一般来说,拥有可以从远程计算机运行任意请求的服务是非常危险的。

根据您的公司IT政策,您可能也不允许在客户端PC上运行此类服务。

您最好让客户端正常下载资源,然后让用户手动执行资源。

PS:您可以在1024以下的端口上运行客户端服务,但它必须以root身份启动,并且在绑定到端口后删除所有root权限并使用{{3}将正在运行的用户更改为其他用户(或用你选择的语言中的等价物)

答案 2 :(得分:0)

如果您有一个特定的应用程序子集将在客户端系统上运行(也就是您正在分配作业),那么您可能需要考虑python salt。它是一个分布式RPC,它使用安全协议和身份验证来分配作业并提供结果:

http://docs.saltstack.org/en/latest/topics/index.html

如果您正在考虑基于特定更新自动生成内容,那么您可能需要考虑Jenkins,它具有用于各种修订控制系统和构建系统的插件:

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

它可能没有与您正在使用的特定工具集成,但如果确实如此,那么它可以比通用盐自动化更快地进行设置和管理。

- 大卫