При создании нового скрипта автоматизации ruby для обработки файлов вверх и вниз из sftp-соединения у меня возникают проблемы с извлечением имен файлов. Используя те же самые точные методы, я создал автоматические скрипты sftp, которые активно используются и не имеют особых проблем, но я не могу показать доступные имена файлов в этой настройке sftp.Сломанные имена файлов с Ruby при подключении к SFTP версии 5
Я знаю, что соединение sftp прекрасное, так как я могу загружать файлы и могу жестко указывать путь/имя файла для загрузки файлов. Моя проблема, похоже, связана с чтением имен файлов.
Используя типичные методы, я могу только показаться, чтобы получить вывод о том, что, как представляется, объектный файл или масса запутанного текста, который действительно включает имена файлов:
"#<Net::SFTP::Protocol::V04::Name:0x4f6d598 @name=nil, @attributes=#<Net::SFTP::Protocol::V04::Attributes:0x4f6d5c8 @attributes={:type=>1}>>"
или (клип от массы перемешаны (восьмеричное?) данные, которые содержат имена файлов делает):
"#<Net::SFTP::Protocol::V04::Name:[email protected]="[email protected]\000\000\000\027domain [email protected]\000\000\001\200\000\000\000\000X\201\031)\000\000\000\000XE\252\312\000\000\000\000X\201\031)\000\000\000\b\000\000\000\031MVP20170106-238682954.999\000\000\002\275\001\000\000\000\000\000\000\001K\000\000\000\[email protected]\000\000\000\027domain [email protected]\000\000\001\200\000\000\000\000X~z\366\000\000\000\000X~z\366\000\000\000\000Xo\373=\000\000\000\000\000\000\000'MVP20170106-238682954.HTML\000\000\002\275\001\000...."
Этот выход из кода (упрощенный):
require 'net/sftp'
require 'net/ssh'
Net::SSH.start(@site,@user,:password =>@pass) do |session|
session.sftp.connect do |sftp|
sftp.dir.foreach('/Download') do |file|
next if (file.name == '..' || file.name == '.')
next if !file.file?
p file
Это должно быть просто, но я работаю над этой проблемой в течение нескольких недель; , пожалуйста, предоставьте информацию, укажите, где я ошибаюсь, или это может быть проблемой на стороне SFTP? Пробовали с сеансом SSH и без него
Что вы получаете, если печатаете 'file.name'? –
Использование print file.name Я получаю смещенный вывод, но похоже, что он пытался присвоить символы восьмеричному коду: 'inistrators @ BUILTIN ↨domain users @ POSTNTRACK ☺Ç Xü ↓) XE¬╩ Xü ↓) ↓ 20170106-2682954.999 ☻╜☺ ☺K ▬Администраторы @ BUILTIN ↨областные пользователи @ POSTNTRACK ☺Ç X ~ z ÷ X ~ z ÷ Xo√ = 'M20170106-2382954_SUMMARY_5010.HTML ☻╜☺ 0/▬Администраторы @ BUILTIN ↨областные пользователи @ POSTNTRACK ☺Ç X ~ z≈ X ~ z≈ Xo√> ↓ MVP270111-238912517.999 ☻╜☺ ☺Q ▬Администраторы @ BUILTIN ↨областные пользователи @ POSTNTRACK ☺Ç X ~ z ÷ X ~ z ÷ Xvôt'20170111-238912517_SUMMARY_50.HTML ' –
Что вы получаете, когда вы подключиться с помощью автономного клиента SFTP, например WinSCP? - Покажите нам свой журнал. –