如何编写批量 nslookups 脚本

How to script bulk nslookups

我有一个几百万个域名的列表,我想看看它们是否可用。

我首先尝试了 pywhois,但速度受到限制。因为我不需要权威的答案,所以我想我会使用 nslookup。不过我在编写脚本时遇到了问题。

基本上,我想做的是,如果域已注册,则回显它。我得到的是 grep: find”: No such file or directory 。我认为这很简单,而且我已经看这个太久了...

#!/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))

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

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

如果你有数百万要检查,你可能喜欢使用 GNU Parallel 来更快地完成工作,如果你想重复做,比如并行 32 次查找,就像这样

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

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

#!/bin/bash

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

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

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

如果查找的顺序对您很重要,您可以将-k标志添加到parallel以保持顺序。