直接将JSON文件转储到远程SSH连接中,而不先将它们存储在本地机器中

lzfw57am  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(97)

我需要使用SSH连接将数据以JSON文件的形式转储到远程服务器中,但我需要将数据直接转储到远程服务器中,而无需先将其转储到本地机器中。我正在使用Paramiko进行SSH连接,但我对其他解决方案持开放态度。
我从数据库中提取数据并将这些数据转换为字典数据结构。现在我想以JSON文件的形式转储这些字典,但我无法将数据保存在本地机器中。我需要直接将它转储到一个服务器,我通过Python与Paramiko连接。我需要同时做所有事情,从数据库中提取数据,转换成字典,并将其作为JSON文件转储到远程服务器中。
在这里我添加了一些虚拟代码,并满足了我的基本需求。

import paramiko

dicty = {'a': 1, 'b':2, 'c': 3}

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('141.42.48.20', username='user', password='psw')

with open('dictionary.txt', 'w') as outfile:
    json.dump(dicty, outfile, default=myconverter)

ssh.close()

字符串
我需要的是,我不想将数据转储到outfile中,而是将数据转储到ssh客户端中。
我愿意接受另一个解决方案或框架。我只需要一个字典作为JSON直接到服务器。

4c8rllxm

4c8rllxm1#

只需将普通(本地)open替换为Paramiko SFTPClient.open

sftp = ssh.open_sftp()

with sftp.open('dictionary.txt', 'w') as outfile:
    json.dump(dicty, outfile, default=myconverter)

字符串
强制性警告:
不要这样使用AutoAddPolicy。你这样做会失去安全感。
参见Paramiko“未知服务器”。

相关问题