如何编写批量nslookup脚本

时间:2015-04-01 18:59:58

标签: linux bash shell whois nslookup

我有一个包含数百万个域名的列表,我想知道它们是否可用。

我先尝试过pywhois,但速度有限。由于我不需要权威的答案,我以为我会使用nslookup。我在编写脚本时遇到了麻烦。

基本上,我想要做的是,如果域名已注册,请回复它。我得到的是 grep:find“:没有这样的文件或目录。我认为这很容易,而且我已经看了太久......

#!/bin/bash
START_TIME=$SECONDS
for DOMAIN in `cat ./domains.txt`;
do
    if ! nslookup $DOMAIN | grep -v “can’t find”; then
        echo $DOMAIN
    fi
done
echo ELAPSED_TIME=$(($SECONDS - $START_TIME))

2 个答案:

答案 0 :(得分:1)

错误是因为您的脚本中有引号,这不是引用命令行元素的正确方法。结果,它们被视为文件名的一部分。改为:

if ! nslookup $DOMAIN | grep -v "can't find"; then

答案 1 :(得分:1)

如果你有数百万要检查,你可能想使用GNU Parallel来更快地完成工作,如果你想反复做,比如32并行查找

parallel -j 32 nslookup < domains.txt | grep "^Name"

如果你想摆弄nslookup的输出,最简单的方法可能是声明一个名为lkup()的小函数,告诉GNU Parallel关于它,然后使用它,就像这样

#!/bin/bash

lkup() {
  if ! nslookup $1 | grep -v "can't find"; then
     echo $1
  fi
}

# Make lkup() function visible to GNU parallel
export -f lkup

# Check the domains in parallel
parallel -j 32 lkup < domains.txt

如果查找的订单对您很重要,您可以将-k标记添加到parallel以保留订单。