【发布时间】:2015-06-20 17:53:08
【问题描述】:
我正在将客户的 WHM / cPanel 帐户迁移到新服务器,但是他在服务器上托管了很多很多站点,我需要检索他们的名称服务器。
我想创建一个 bash 脚本来解析文件(每个域位于单独的行),执行 dig 和 whois,找到名称服务器和 IP,然后输出域及其名称服务器到另一个文件。
我不太擅长 bash,但我找到并编辑了这个脚本 - 但它似乎根本不想工作。如果有人有任何见解,那就太好了。谢谢!
#!/bin/bash
# dig $line +short >> ip address
# whois $line >> Lists full details including the name servers
# whois $line | grep "Name Server" | cut -d ":" -f 2 | sed 's/ //' |
# sed -e :a -e '$!N;s/ \n/,/;ta'`
while read inputfile
do
echo $domain
ipaddress=`dig $domain +short`
nameserver=`whois $domain | grep "Name Server" | cut -d ":" -f 2 |
sed 's/ //' | sed -e :a -e '$!N;s/ \n/,/;ta'`
echo -e "$domain,$ipaddress,$nameserver" >> outputfile
done
【问题讨论】:
-
你没有给第一个
sed命令提供任何输入数据来处理(尽管它看起来实际上是评论的一部分)。同样,您不会在while循环中给read命令提供任何要读取的数据(通常通过<input_file或< <(process that generates data)从done行上的文件或类似文件重定向。 -
是的,您确实是正确的,第一个
sed是为了成为评论。呃,我需要处理我的 bash。 -
inputfile是否应该存在包含域的文件?因为read的参数是将读取数据分配给文件/等的变量。从中读取数据。read默认从标准输入读取(因此read line <inputfile会将inputfile的第一行读入line变量)。你可能想要while IFS= read -r line和done <inputfile那里。请参阅mywiki.wooledge.org/BashFAQ/001 了解更多信息。 -
嗯,这几乎让我到达了我需要的地方。非常感谢伊坦!现在唯一的问题是其中一些域是
.br并且whois 不返回名称服务器,呃。虽然没有什么可以帮助我的,哈哈。再次谢谢你!编辑:哇,我在想什么。我忘了dig ns。伙计,今天是星期五吗? :P -
您不应该使用 whois 来获取有效的域名名称服务器。 list 只需使用 DNS。