2017-02-13 6 views
0
rb_sysopen

@ : 추출하고 나는 'Nokogiri로 파일을 구문 분석하는 시도에서추출 tar 파일 : errno를 :: ENAMETOOLONG : 파일 이름이 너무 깁니다 나는 다음과 같은 내용이있는 tar 파일이

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

을 m은 rails console에 다음과 같은 오류가 :

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) } 
01 : 여기

Errno::ENAMETOOLONG: File name too long @ rb_sysopen

지금까지 내 코드입니다 결국 23,516,

, 내 코드는 콘솔에 내용을 출력하기 때문에 host_file을 여는 것으로 나타납니다,하지만이 오류가 발생하기 때문에이 host_file에 아무것도 저장 아니에요 :

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' 

내가 여기 무슨 일을하고있는 중이 야 ?

답변

1

File.open(entries["network_hosts.xml"])은 network_hosts.xml의 콘텐츠를 가져 와서 파일 이름으로 사용하여 파일을 엽니 다. network_hosts.xml의 내용을 이미 읽고 항목에 저장 했으므로이 문자열을 XML로 직접 변환하면됩니다.

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