Записывайте файлы JSON непосредственно в удаленное соединение SSH, не сохраняя их сначала на локальном компьютере - PullRequest
1 голос
/ 02 мая 2019

Мне нужно выгрузить данные в виде JSON-файла на удаленный сервер, используя SSH-соединение, но мне нужно выгрузить данные непосредственно на удаленный сервер, не выгружая их сначала на моем локальном компьютере.Я использую 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 Ответ

1 голос
/ 02 мая 2019

Просто замените обычный (локальный) open на Paramiko SFTPClient.open:

sftp = ssh.open_sftp()

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

Обязательное предупреждение:
Не используйте AutoAddPolicy, как это. При этом вы теряете безопасность.
См. Paramiko "Неизвестный сервер" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...