簡體   English   中英

在帶有輸出的終端上運行批量 DNS + Whois 搜索

[英]Run Batch DNS + Whois Search on Terminal with Output

我正在嘗試將某些 DNS 記錄搜索的批量搜索與我的終端上的 Whois 搜索結合起來。 我有一個包含域列表的 CSV 文件,我想運行以下批處理搜索器:

  • MX 搜索: host -t mx $domain
  • NS 搜索: host -t ns $domain

這很容易。

將此與 Whois 搜索結合起來; 它只返回一些 Whois 數據的摘要;我需要查詢域名的 whois 服務器,這很好,例如:whois

我可以使用-h ,只記錄域名注冊人的詳細信息,如電話、國家代碼等。我試過這個:

  • Whois: whois -h 'Registrar WHOIS Server:' "domain"這也為我提供了僅注冊人詳細信息的輸出。

因此,當我將所有內容合並為一個 bash 文件時,我得到:

#!/usr/bin/env bash

file="${1:-input_test1.csv}"

if [[ ! -f "$file" ]]; then
    printf 'No file: %s\n' "$file" >&2
    exit 1
fi

(
  read -r header; printf '%s\n' "$header"
  while IFS=, read -r domain; do
    mx="$(host -t mx "$domain" | sort | head -1)"
    ns="$(host -t ns "$domain" | sort| head -1)"
    whois="$(whois -h "$(whois" "$domain" | grep 'Registrar WHOIS Server:') "$domain")
    printf '%s,"%s"\n' "$domain" "$mx" "$ns" "$whois"
  done
) < "$file"

我很想得到一個帶有域的 CSV 輸出,mx(只有 1 個),NS(只有 1 個),whois whois 是注冊人數據,如下所示;

示例預期輸出屏幕截圖

謝謝你。

您已經知道不同的域指向不同的 whois 服務器。 我想你會發現每個注冊商都有自己喜歡的通過 whois 呈現信息的方式,而且它們並不一致。 ICANN 要求通過 whois 提供最少的數據集,但您要查找的某些數據可能不在該集范圍內。

以下僅從 whois.internic.net 中剝離基本數據,您可以使用這些數據收集 DNS 服務器、whois 服務器和 MX:

#!/usr/bin/env bash

mapfile -t domains < domains.lst

declare -i i
for this in "${domains[@]}"; do
  unset a; declare -A a=()
  unset ns; declare -a ns=()
  whois=""
  i=0
  while IFS=: read -r key value; do
    #printf "key=%s / value=%s\n" "$key" "$value"
    case "$key" in
      *"Registrar WHOIS Server") whois="${value## }" ;;
      *"Name Server") ns+=("${value## }") ;;
    esac
  done < <(whois -h whois.internic.net "$this")
  read mx < <(host -t mx "$this" | sort | awk 'NR==1{print $NF}')

  printf '%s,%s,%s,%s\n' \
    "$this" \
    "$mx" \
    "$whois" \
    "$(printf '%s ' "${ns[@]}")"
done

如果您真的想嘗試從$whois的 whois 數據中抓取數據,上面的腳本應該向您展示如何為列表中的每個域執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM