0

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

我首先尝试了 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))
4

2 回答 2

2

如果你有数以百万计的检查,你可能喜欢使用 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以保持顺序。

于 2015-04-01T21:03:42.250 回答
1

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

if ! nslookup $DOMAIN | grep -v "can't find"; then
于 2015-04-01T19:05:43.557 回答