[英]Run Batch DNS + Whois Search on Terminal with Output
我正在嘗試將某些 DNS 記錄搜索的批量搜索與我的終端上的 Whois 搜索結合起來。 我有一個包含域列表的 CSV 文件,我想運行以下批處理搜索器:
host -t mx $domain
host -t ns $domain
這很容易。
將此與 Whois 搜索結合起來; 它只返回一些 Whois 數據的摘要;我需要查詢域名的 whois 服務器,這很好,例如:whois
我可以使用-h
,只記錄域名注冊人的詳細信息,如電話、國家代碼等。我試過這個:
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.