1

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

4

3 回答 3

1

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

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

于 2012-10-13T23:21:11.027 回答
1

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

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

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

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

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

PS:您可以让客户端服务在低于 1024 的端口上运行,但它必须以 root 身份启动,并且在绑定到端口后删除所有 root 权限并使用setuid(或您的等效项)将运行用户更改为不同的用户选择的语言)

于 2012-10-13T23:35:09.387 回答
0

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

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

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

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

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

- 大卫

于 2012-10-14T00:12:57.910 回答