python - 通过 SSH 传输 pickle 字节

标签 python ssh pickle

我正在尝试从计算机上的另一个 python 脚本在服务器上远程启动 python 脚本。目标是通过 SSH 传输类中的一些数据(例如,data 是我要传输的字符串。当然,使用 pickle 作为字符串是没有意义的,这只是为了示例)。

我想要这样的东西:

脚本(在计算机上):maCo 是 SSH 连接。

import pickle
data = 'é&'
data_bytes = pickle.dumps(data)
maCo.sendCmd(['python3', 'serverScript.py', '-ma', data_bytes])

脚本(在服务器上)

import argparse, pickle
parser = argparse.ArgumentParser()
parser.add_argument("-ma", "--myarg", help="Arg", type=bytes)
args = parser.parse_args()
data = pickle.loads(args.myarg)

我尝试将字节转换为字符串,但没有成功。 感谢您的帮助

最佳答案

我不确定你想从你的问题中做什么,但我可以猜测......

如果您正在寻找一个可以帮助您建立 ssh 连接然后发送 python 对象的软件包,pathos 能够建立 ssh 隧道或直接 ssh 连接 - 那么您可以通过它进行任何类型的通信(通常是套接字到套接字通信,如 zmq 提供的,或其他一些 rpc 连接 - 我经常使用并行Python)。线路上的所有通信都可以进行 pickle,但实际上它们只需要是序列化对象即可。 pathos 试图为您提供一个功能接口(interface)来使用 ssh 以及并行 pipemap 构造。

此外,如果您希望传输类对象或类实例,并且使用 pickle 来序列化对象,则需要在已存在的模块中定义该类在远程计算机上并且位于远程 PYTHONPATH 上。如果您使用 dill 序列化您的类对象或实例,则不需要提前在远程系统上使用该类。这是因为 pickle 通过引用序列化类,而 dill 可以存储整个类对象或实例(通过引用序列化)。

在此处获取 pathosdill:https://github.com/uqfoundation

我相信 IPython 最近也能够执行其中的一些操作,但是您仍然需要 dill 来发送序列化的类实例(如上所述)。

关于python - 通过 SSH 传输 pickle 字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750925/

相关文章:

python - 类型错误 : can't pickle PyCapsule objects

python - 循环内的 Jython 异常处理

python - 预测概率

php - 我想通过 SSH 从 Contenido 连接到数据库

python - 从 Action 插件调用过滤器插件

python - 当两个 python 脚本访问单个 pickle 文件时,如何避免读取错误?

python - 如何使 Plotly 饼图始终大小相同

python - 值错误 : signal only works in main thread - Django - mod_wsgi

linux - 如何通过 ssh 到 linux 杀死 mac os x 上的进程

linux - Tee 命令 unix