SFTP接続からファイルを処理する新しいRuby自動化スクリプトを作成しているうちに、ファイル名の抽出に問題があります。 これらの同じ正確な方法を使用して私は積極的に使用されているし、多くの問題を抱えていない自動sftpスクリプトを構築しましたが、私はこのsftpセットアップでファイルの利用可能なファイル名を出力するように見えません。SFTPバージョン5に接続したときにRubyでファイル名が壊れた
私はファイルをアップロードすることができ、ファイルをダウンロードするためにパス/ファイル名でハードコードできるので、sftp接続が正常であることを知っています。 私の問題は、特にファイルの名前を読み取っているようです。典型的な方法を使用して
、私はファイル名のみが含まれないファイルオブジェクトまたはごちゃ混ぜテキストの塊のように見えるものの出力を得るように見えることができます:
"#<Net::SFTP::Protocol::V04::Name:0x4f6d598 @name=nil, @attributes=#<Net::SFTP::Protocol::V04::Attributes:0x4f6d5c8 @attributes={:type=>1}>>"
やごちゃ混ぜの質量から(クリップ(8進数?)データのファイル名が含まれていない):
"#<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を使用すると、出力が乱れてしまいますが、8進コードに文字を割り当てようとしたようです: 'inistrators @ BUILTIN↨domusers @ 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 ' –
あなたはWinSCPのようなスタンドアロンのSFTPクライアントを使用して接続しますか? - 私たちのログを見せてください。 –