2017-02-13 1 views
0

ich eine tar-Datei, die den folgenden Inhalt hat:Extrahieren von TAR-Datei mit Schienen: Errno :: ENAMETOOLONG: Dateiname zu lang @ rb_sysopen

/results/02-12-2017_13:17:41/ 
├── events.log 
├── network_hosts.gnmap 
├── network_hosts.nmap 
├── network_hosts.xml 
├── report.xml 
└── results.xml 

Bei dem Versuch, die Datei mit Nokogiri ich zu extrahieren und analysieren m immer den folgenden Fehler in rails console:

Errno::ENAMETOOLONG: File name too long @ rb_sysopen

Hier ist mein Code so weit:

test = Test.find(test_id) 
gzip = Zlib::GzipReader.open(test.data.path) 

entries = {} 
tar_extract = Gem::Package::TarReader.new(gzip) 
tar_extract.rewind 
tar_extract.each do |entry| 
    entries[File.basename(entry.full_name)] = entry.read 
end 

host_file = File.open(entries["network_hosts.xml"]) { |f| Nokogiri::XML(f) } 

Am Ende erscheint mein Code die host_file zu eröffnen, da sie den Inhalt auf der Konsole ausgibt, aber es ist nicht alles in host_file sparend, da dieser Fehler passiert:

Errno::ENAMETOOLONG: File name too long @ rb_sysopen - <?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE nmaprun> 
<?xml-stylesheet href="file:///usr/local/bin/../share/nmap/nmap.xsl" type="text/xsl"?> 
<nmaprun scanner="nmap" args="nmap -sn -oA /results/02-10-2017_18:17:34/network_hosts 10.10.10.1 10.10.10.2" start="1486768654" startstr="Fri Feb 10 18:17:34 2017" version="7.12" xmloutputversion="1.04"> 
.................. 
</nmaprun> 
from (pry):102:in `initialize' 

Was mache ich falsch hier tun ?

Antwort

1

File.open(entries["network_hosts.xml"]) Ruft den Inhalt von network_hosts.xml ab und versucht, ihn als Dateinamen zu verwenden, um eine Datei zu öffnen. Da Sie bereits den Inhalt network_hosts.xml gelesen und gespeichert es Einträge, können Sie einfach direkt die Zeichenfolge in XML konvertieren:

host_file = Nokogiri::XML entries['network_hosts.xml']

Verwandte Themen