Bash 运行批处理DNS+;带输出的终端上的搜索是谁
我正在尝试将对某些DNS记录的批量搜索与我的终端上的Whois搜索结合起来。我有一个包含域列表的CSV文件,我想运行以下批处理搜索程序:Bash 运行批处理DNS+;带输出的终端上的搜索是谁,bash,shell,csv,dns,whois,Bash,Shell,Csv,Dns,Whois,我正在尝试将对某些DNS记录的批量搜索与我的终端上的Whois搜索结合起来。我有一个包含域列表的CSV文件,我想运行以下批处理搜索程序: MX搜索:host-t MX$domain NS搜索:host-t NS$domain 这很容易 结合Whois搜索;只返回Whois部分数据的摘要;我需要为域查询whois服务器,如下所示: 谁 我可以使用-h,只记录域注册人的详细信息,如电话、国家代码等。我尝试过以下方法: Whois:Whois-h'注册商Whois服务器:'“域” 这给了我的输出
- MX搜索:
host-t MX$domain
- NS搜索:
host-t NS$domain
-h
,只记录域注册人的详细信息,如电话、国家代码等。我尝试过以下方法:
- Whois:
这给了我的输出,以及只有注册人的详细信息Whois-h'注册商Whois服务器:'“域”
#!/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"
#/usr/bin/env bash
file=“${1:-input_test1.csv}”
如果[!-f“$file”];然后
printf“没有文件:%s\n”“文件”>&2
出口1
fi
(
read-r头;printf'%s\n'$header
当IFS=,read-r domain;do
mx=“$(主机-t mx“$域”|排序|头-1)”
ns=“$(主机-t ns“$domain”|排序|头-1)”
whois=“$(whois-h”$(whois“$domain”| grep”注册器whois服务器:')“$domain”)
printf“%s”,“%s”\n“$domain”$mx“$ns”$whois”
完成
)<“$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
!/usr/bin/env bash
mapfile-t domains 完成hunt2.sh:line 2:mapfile:command not found hunt2.sh:line 16:unexpected token附近的语法错误
啊,可能您使用的是较旧版本的bash。mapfile
命令是在bash 4中引入的,bash 4已经有十年的历史了。据我所知,目前唯一还在使用bash 3的现代操作系统是macOS。如果你使用macOS,你可以使用or安装bash 4。为了便于将来参考,通常最好将你使用的版本放在你的问题中,以避免被assu难倒mptions。谢谢你,ghoti,你太好了。我被bash更新到5后,我很乐意让脚本启动并运行。脚本正在运行并在终端上打印输出,但没有写入到文件中。我需要做些什么来将输出传输到文件或新文件中吗?通过运行一行程序和使用whois-h$(whois example.com | grep | whois Server:| cut-f2--d:)可获得更多DNS数据我希望修改这里的部分:done
<我的荣幸-我希望每个人都与StackOverflow有着长期而有用的关系,高质量的长期问题是其中的一个重要部分。:)也就是说,解析包含在注释中的代码非常困难。如果你认为这段代码作为该问题的一部分,请编辑该问题并添加您的说明。如果您认为这是一个不同的问题,请这样做。一个包含太多部分的问题不可能得到完整的答案。