Contents

  1. whois
  2. history

必要なパッケージ: Network.DNS(dnsパッケージ)を使用してDNSクエリを実行。

その他、標準ライブラリのモジュールを使用。

1. whois

import Network.DNS
import Data.List (isSuffixOf)
import Control.Monad (forM_)
import System.Environment (getArgs)
import System.Exit (exitFailure)

-- NSレコードからホスト名を抽出する関数
extractHostnames :: [ResourceRecord] -> [String]
extractHostnames records = [ rdata | RR _ _ NS rdata _ <- records ]

main :: IO ()
main = do
    -- コマンドライン引数からドメインを取得
    args <- getArgs
    let domain = case args of
                    [d] -> d
                    _   -> error "Usage: program <domain>"

    -- DNSリゾルバの設定
    res <- makeResolvSeed defaultResolvConf
    withResolver res $ \resolver -> do
        -- NSレコードのクエリ
        result <- lookupNS resolver domain
        case result of
            Left err -> do
                putStrLn $ "DNS lookup failed: " ++ show err
                exitFailure
            Right records -> do
                let hostnames = extractHostnames records
                if null hostnames
                    then putStrLn "No NS records found."
                    else forM_ hostnames $ \hostname ->
                            putStrLn hostname

2. history


CategoryDns CategoryWatch CategoryTemplate

MoinQ: Haskell/NS (last edited 2025-05-03 08:34:44 by ToshinoriMaeno)