我有一个包含几百万个域名的列表,我想看看它们是否可用。
我首先尝试了 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))
最佳答案
如果你有数百万要检查,你可能喜欢使用 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
以保持顺序。
关于linux - 如何编写批量 nslookups 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29398702/