Простой скрипт SFTP - PullRequest
       8

Простой скрипт SFTP

0 голосов
/ 20 апреля 2019

Я получаю ошибку, не удалось загрузить hostkeys.

Здравствуйте,

У меня проблемы со сценарием, который я написал для отправки файла в SFTP. Я использую Windows, и ниже приведен код, который у меня есть. Фактические манипуляции с данными и изменения имен работают нормально - они ломаются в части SFTP. Я надеюсь, что один из вас, гуру, сможет помочь новичку.

import pandas as pd
import datetime
import pysftp
import sys

today = str(datetime.date.today().strftime("%m%d%y"))

report = pd.read_csv('C:\\Users\\nickkeith2\\PycharmProjects\\clt\\041719_clt_Facility_company_Inv.csv')

report.columns = report.columns.str.replace('_', ' ')

report.to_csv('C:\\Users\\nickkeith2\\PycharmProjects\\clt\\' + today + '_clt_Facility_company_Inv2.csv',
              index=False)

remote_file = 'C:\\Users\\nickkeith2\\PycharmProjects\\clt\\' + today + '_clt_Facility_company_Inv2.csv'[1]

cnopts = pysftp.CnOpts()
cnopts.hostkeys.load("C:\\Users\\nickkeith2\\id_rsa.pub")

srv = pysftp.Connection(host="xx.xxx.xxx.xxx", username="sftpuser")

srv.put(remote_file)

srv.close()

print(report.columns)

Я пробовал различные комбинации использования ключа, не использования ключа и использования пароля вместо этого, но независимо от того, что возвращает ошибку:

UserWarning: Failed to load HostKeys from C:\Users\nickkeith2\.ssh\known_hosts.  You will need to explicitly load HostKeys (cnopts.hostkeys.load(filename)) or disableHostKey checking (cnopts.hostkeys = None).
  warnings.warn(wmsg, UserWarning)

Я попытался создать папку в Windows, в которой указано, что нужно поместить туда ключ, но он мне тоже не позволит. Заранее благодарим вас за любые идеи, которые вы можете предоставить.

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Мне удалось успешно завершить это, используя paramiko вместо PYSFTP.

Спасибо!

import pandas as pd
import datetime
import paramiko


ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())


today = str(datetime.date.today().strftime("%m%d%y"))

report = pd.read_csv('C:\\Users\\nickkeith2\\PycharmProjects\\clt\\041719_marshall_Facility_clt_Inv.csv')

report.columns = report.columns.str.replace('_', ' ')

report.to_csv('C:\\Users\\nickkeith2\\PycharmProjects\\clt\\' + today + '_marshall_Facility_clt_Inv2.csv',
              index=False)

remote_file = 'C:\\Users\\nickkeith2\\PycharmProjects\\clt\\' + today + '_marshall_Facility_clt_Inv2.csv'

ssh_client.connect(hostname="xxxxxxxx", username="xxxxxxxx", password="xxxxxxxxxx")

ftp_client=ssh_client.open_sftp()
ftp_client.put(remote_file, '\\Outbound\\'+ today + '_marshall_Facility_clt_Inv2.csv')
ftp_client.close()

print(report.columns)
0 голосов
/ 20 апреля 2019

Расшифровка комментариев Чарльза Даффи как ответа:

Файл id_rsa.pub не является ключом хоста.Для ясности, файл ключей хоста используется клиентом для проверки подлинности хоста, к которому он подключается (это список известных открытых ключей , идентифицирующих удаленные серверы , а не общедоступныхключи , идентифицирующие пользователя, который входит в систему ).

...