이 DNS 검색 스크립트를 만들었는데 아주 이상한 일을하고 있습니다. 관련 코드 :가짜 호스트 이름을 해결 하시겠습니까?
def resolver
begin
Resolv.each_address(@host) do |ip|
if ip == false
puts "Failed to resolve address"
else
puts ip
end
end
rescue ArgumentError
puts "You must specify a hostname."
end
end
모두 한 부분을 제외하고 예상대로 작동합니다. 말도 안되는 것을 입력하면 (예 : fdjafaldjfafbfda) 성공적으로 주소를 확인합니다. 동일한 주소 일 때마다, 비록 내가 입력 한 임의의 쓰레기가 다르더라도. 왜 이런 일이 일어나고 있는지 이해하고 싶습니다. 나는 그것이 코드의 if ip == false 부분과 관련이 있다고 가정하고있다. 내가
ruby resolve.rb www.stackoverflow.fake.domain
와 예를
require 'resolv'
def resolver(host)
begin
puts "resolving \"#{host}\""
Resolv.each_address(host) do |ip|
if ip == false
puts "Failed to resolve address"
else
puts ip
end
end
rescue ArgumentError
puts "You must specify a hostname."
end
end
resolver(ARGV[0])
의 약간 수정 된 버전을 실행하면 예상대로
'require 'resolv'; Resolv.each_address ('garbage') {| ip | p ip};'IRB 또는 Pry에서 나를위한 결과를 출력하지 않습니다. 그게 너를위한거야? –
DNS 호스트로 8.8.8.8 (Google)을 사용해보십시오. 그들은 알려지지 않은 주소를 시도하고 납치하지 않을 것입니다. – Matt