`dispatch_request ': нет такого запроса во время Net :: SFTP.upload

Я использую Net :: SFTP для загрузки файла на сервер. Вот код:

uri = URI.parse('sftp://host.org')
io = StringIO.new(csv_string)
timeout 120 do
  Net::SFTP.start(uri.host,ENV['SFTP_USER'],:password=>ENV['SFTP_PASS'],:port=>22)  do |sftp|
    sftp.upload(io, "/ftpguest/Medstro/" + file_name)
  end
end

Когда я запускаю код, он успешно подключается к хосту и загружает файл с нулевым байтом с правильным именем файла. Затем он выдает это исключение:

lib/ruby/gems/2.3.0/gems/net-sftp-2.1.2/lib/net/sftp/session.rb:947:in `dispatch_request': no such request `403046400' (Net::SFTP::Exception)

Содержимое файла не выгружается, я просто получаю файл с нулевым байтом. Я ничего не могу найти в Google. Кто-нибудь знает, как это исправить?

К вашему сведению, я могу загрузить файл с помощью WinSCP.


person ChaosFreak    schedule 16.02.2017    source источник


Ответы (2)


Обновление гема net-ssh до версии 4.0.1 решило эту проблему.

person ChaosFreak    schedule 16.02.2017

Зайдите в это сегодня. Убедитесь, что вы указали версию sftp, на которой говорит ваш сервер. Вы можете запустить version в оболочке вашего sftp-сервера, чтобы узнать:

sftp> version
SFTP protocol version 3

Затем передайте его Net::SFTP#start вот так:

Net::SFTP.start(host, user, { password: password, port: port }, { version: version })
person bimbom22    schedule 12.01.2021