目前,我以循环方式获取域列表NS(Name Server)
记录。
#ns_check.sh
for i in $(cat Input.txt);do dig +short NS $i;done
输入文件只有域。
#Input.txt
example.com
hello.com
blah.com
我得到的输出是,
#Out.txt
ns4.p05.dynect.net.
ns2.p05.dynect.net.
ns1.p05.dynect.net.
ns3.p05.dynect.net.
ns-315.awsdns-39.com.
ns-564.awsdns-06.net.
ns-1162.awsdns-17.org.
ns-1949.awsdns-51.co.uk.
a3.verisigndns.com.
u1.verisigndns.com.
a2.verisigndns.com.
a1.verisigndns.com.
u2.verisigndns.com.
u3.verisigndns.com.
现在,我想有我的输入.txt
#Input.txt
1,example.com
2,hello.com
3,blah.com
输出必须像,
#Out.txt
1,ns4.p05.dynect.net.
1,ns2.p05.dynect.net.
1,ns1.p05.dynect.net.
1,ns3.p05.dynect.net.
2,ns-315.awsdns-39.com.
2,ns-564.awsdns-06.net.
2,ns-1162.awsdns-17.org.
2,ns-1949.awsdns-51.co.uk.
3,a3.verisigndns.com.
3,u1.verisigndns.com.
3,a2.verisigndns.com.
3,a1.verisigndns.com.
3,u2.verisigndns.com.
3,u3.verisigndns.com.
如何将输入ID
添加到获得的域的每个NS记录的输出中?shell脚本的新手,关于如何解决这个问题的任何建议?
您可以使用
此while
循环:
while IFS=, read -r n h; do
printf "$n,%sn" $(dig +short NS "$h")
done < input.txt
-
IFS=, read -r n h
会将每个逗号分隔的行读取为 2 个变量n
(数字)和h
(主机)。 -
printf "$n,%sn" $(dig +short NS "$h")
会将dig
命令输出中的每一行替换为$n,
。