如何远程执行客户端功能?

Posted

技术标签:

【中文标题】如何远程执行客户端功能?【英文标题】:How to execute client functions remotely? 【发布时间】:2017-08-05 23:50:57 【问题描述】:

我有一个封闭、安全的网络。我想将我的代码传递给执行程序并在那里执行它。我希望能够在它执行时看到它的控制台输出(进度/信息)。

假设我们有一个在当前客户端代码中不带参数的函数,如何在服务器上执行它并返回输出?是否有适用于此类用例的 Python 框架?

【问题讨论】:

您需要阅读 David Beazley 的 original generators tutorial(选择演示幻灯片)。请特别注意第 7 部分。对于输出,请注意第 5 部分,他讨论了“拖尾文件”。 【参考方案1】:

您没有指定足够的详细信息来给出详细的答案。例如,您的系统的规模是多少,应该有多少“执行者”,是否应该自动扩展等等。

但是,对于您所要求的,Pyro4 应该能够为您执行此操作。它允许您像在本地一样调用远程机器上的成员函数。它确实需要您在执行程序节点上运行一个小型服务器进程。

如果您在执行程序中捕获sys.stdout 并将这些行作为生成器结果,您也可以轻松地将输出流式传输到调用应用程序,因为 Pyro4 支持远程生成器。不过,如果您不想在执行程序中出现不必要的延迟,您可能希望缓冲输出。

编辑:即将发布的 Pyro 4.62 版本引入了对“cloudpickle”序列化程序的支持。 Pyro4 长期以来一直支持“dill”序列化程序。这两者都允许您将函数本身实际发送到服务器。这意味着,一旦您运行了一个(非常小的)服务器并接受了一个可调用对象,您就可以向它发送 任何 想要远程执行的东西。

【讨论】:

以上是关于如何远程执行客户端功能?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何使用ssh远程登录主机 执行shell脚本?

SaltStack-----安装,远程执行,grains,pillar,jinja模板

如何使用python执行远程shell脚本

如何在不在客户端安装软件的情况下从远程计算机在我的家用计算机上执行 git 命令(拉、推)?

如何在zabbix执行远程主机的脚本或指令

远程代码执行漏洞是啥意思