将JSON文件直接转储到远程SSH连接中,而无需先将其存储在本地计算机中

时间:2019-05-02 11:51:33

标签: python json ssh paramiko

我需要使用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即可直接进入服务器。

1 个答案:

答案 0 :(得分:1)

只需用Paramiko SFTPClient.open替换普通的(本地)open

sftp = ssh.open_sftp()

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

强制性警告:
请勿像这样使用AutoAddPolicy。这样做会失去安全性。
参见Paramiko "Unknown Server"