我有一个包含数百万个域名的列表,我想知道它们是否可用。
我先尝试过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))
答案 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
以保留订单。