目前,我以循环方式获取域名列表的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.
现在,我想把我的Input.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脚本新手,有关如何修复此问题的任何建议?
答案 0 :(得分:1)
您可以使用此while
循环:
while IFS=, read -r n h; do
printf "$n,%s\n" $(dig +short NS "$h")
done < input.txt
IFS=, read -r n h
会将每个逗号分隔的行读取为2个变量n
(数字)和h
(主持人)。printf "$n,%s\n" $(dig +short NS "$h")
会在$n,
命令的输出中用dig
替换每一行的开头。