0

ここではかなり新しいプログラマーであり、私はこれを1週間ハッキングしてグーグルで調べています。

私がやろうとしていることのロジックは次のとおりです。

URL の .txt ファイルを入力し、それらの URL をルート ドメインにトリムします。次に、それらのルート ドメインの DNS レコードが存在するかどうかを確認します。次に、DNS レコードのないドメインで whois ルックアップを実行します。次に、利用可能なドメインを出力します。

その 2 番目の部分である DNS レコードのチェックは、私を完全に困惑させました。

これが私のコードです:

    # encoding: utf-8
require 'domainatrix'
require 'addressable/uri'
#require 'Whois'
require 'Resolv'

urls = Array.new
cleaned = Array.new

urls = File.readlines(*ARGV)

urls.each do |url|
  url = url.to_s
  url = Domainatrix.parse(url)
  cleaned << url.domain_with_tld
end

cleaned.uniq!

# puts cleaned

cleaned.each do |url|
  url = url.to_s
  Resolv.getaddress(url)
end

これを 10 個の URL の単純な test.txt ファイルで実行すると、次のようなエラー メッセージが表示されます。

/usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/Resolv.rb:93:in `getaddress': no address for google.com (Resolv::ResolvError)
        from /usr/local/rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/Resolv.rb:43:in `getaddress'
        from rocker_two.rb:26:in `block in <main>'
        from rocker_two.rb:24:in `each'
        from rocker_two.rb:24:in `<main>'

ここで、irb に飛び乗って、次のような簡単なことをするとします。

>> Resolv.getaddress "google.com"
=> "173.194.43.4"

それは正常に動作します。

問題は、配列内の各オブジェクトを文字列として受け入れるように Resolv を取得することにあるようです。私が試したこのスクリプトの他のバリエーションでは引用符付きのエラー メッセージが表示されましたが、ファイル スクリプトを実行したときに表示されるエラー メッセージには引用符で囲まれたgoogle.comが含まれていないためです。

はい、それにもかかわらず、これはおそらくカーゴ カルト プログラミングの Exhibit A です。

私は自分が新人であり、単純で体系的な間違いを犯している可能性があることに気付きました。ですから、誰かが私を正しい方向に向けて正しい道を示すことができれば、本当に感謝しています!

乾杯、カイル

PS 長年の SO リーダー、初めての発信者。

4

0 に答える 0