Как найти строку с точным соответствием в текстовом файле, используя Ruby? - PullRequest
0 голосов
/ 24 февраля 2012

Я сгенерировал текстовый файл с заголовками ответа HTTP-запроса с телом ответа.Я хочу искать внутри этого файла, ища заголовки ответа, содержащие Access-Control-Allow-Origin: * в качестве заголовка.

Файл содержит это в виде строки, начинающейся с -> и заканчивающейся ", например:

-> "Access-Control-Allow-Origin: *\r\n"

Как найти этот текстовый файл и напечатать пользовательское сообщение над заголовками ответа на запрос, используя условие if?

Нужно ли мне сложное регулярное выражение?

С моим кодом я не могу получить правильный поиск:

require 'net/http'
require 'uri'
require 'IPAddr'
require 'timeout'

puts "Origin IP:\n\n"
originip = gets()
puts "Start IP:\n\n"
startip = gets()
puts "End IP:\n\n"
endip = gets()
(IPAddr.new("#{startip}")..IPAddr.new("#{endip}")).each do |address|
  begin
   uri = URI("http://#{address.to_s}")
   http = Net::HTTP.new(uri.host, uri.port)
   http.set_debug_output($stdout)
   request = Net::HTTP::Get.new(uri.request_uri)
   request.initialize_http_header({"Origin" => "#{originip}"})
   response = http.request request
   $stdout.reopen('Access-Control-Allow-Origin.txt','a')
   f = File.Open('Access-Control-Allow-Origin.txt')
   line = f.read
   if line = /Access-Control-Allow-Origin: */ then
     puts "\n\nAccess-Control-Allow-Origin: * Header Found:\n\n"
   else
     puts "\n\nAccess-Control-Allow-Origin: * Header Not Found:\n\n"
   end
 rescue Timeout::Error => exc
   puts "ERROR: #{exc.message}"
 rescue Errno::ETIMEDOUT => exc
   puts "ERROR: #{exc.message}"
 rescue Exception => exc
   puts "ERROR: #{exc.message}"
 end
end

1 Ответ

1 голос
/ 24 февраля 2012

Ваш оператор if использует неправильный оператор.

if  line =~ /Access-Control-Allow-Origin: */
...