linux - 如何编写批量 nslookups 脚本

标签 linux bash shell whois nslookup

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

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

相关文章:

python - Python中的自动重启系统

node.js - 在 Centos 上安装 React JS

linux - 命令输出、管道、脚本联动

linux - Bash shell 脚本来获取子字符串?

shell - 当选项作为变量传递时, diff -I (大写 'i' )不起作用

linux - 使用 top 从 PID 和 COMMAND 获取前 5 行

bash - 使用 Perl 的 Bash 脚本中出现奇怪的、意外的输出

bash - 创建一个 convertAll() 函数来转换工作目录中的所有 .filetype

linux - Shell 脚本无法将文件数据传递给 Shell 输入

bash - 如何使用shell将一些不同大小的文件合并到一个excel文件中?