【问题标题】:Checking for domain availability in bash with dig使用 dig 检查 bash 中的域可用性
【发布时间】:2014-12-28 09:02:17
【问题描述】:

我目前正在尝试编写一个脚本,该脚本将写出它检测到的可用域。第一个想法是写出任何包含“NXDOMAIN”的内容,但这最终包括了我发现无法注册的域。所以我还添加了对“a.gtld-servers.net”的要求。问题是,在已经注册的域上,这两个条件都得到了满足。对于可以使用什么来过滤结果,我还没有什么想法。

有人知道吗?这是我的代码:

function getResponse () {
   output=$(dig $1.com +nostats +noanswer +noquestion)
     if [[ $output == *NXDOMAIN* ]] && [[ $output == *a.gtld-servers.net.* ]];  then
   echo "$1.com"
     fi
 }

for v in {a..z}; do
  for w in {a..z}; do
    for x in {a..z}; do
      getResponse $v$w$x &
      sleep 0.01s
    done
  done
done

for v in {a..z}; do
  for w in {a..z}; do
    for x in {a..z}; do
      for y in {a..z}; do
        getResponse $v$w$x$y &
        sleep 0.01s
      done
    done
  done
done

【问题讨论】:

  • 顺便说一句:for v in {a..z}{a..z}{a..z}; do echo $v; done
  • 谢谢 - 我知道我的脚本效率非常低 - 但它在我需要的循环方面完成了工作。不得不添加睡眠 0.01s,它使我的电脑崩溃了。我认为它与RAM一起跑了。任何想法 RE:我的问题?
  • 删除& 或在第一个done 之后添加带有wait 的新行

标签: bash dig


【解决方案1】:

这是一个似乎可以工作的脚本:

#! /bin/bash

do_query () # name
{
    dig "$1" +noquestion +nostat +noanswer +noauthority 2> /dev/null
}

get_answers_number () # name
{
    local res=$(do_query "$1")
    res=${res##*ANSWER: }
    echo "${res%%,*}"
}

# Unregistered domains saved in file
file="unregistered.txt"
echo "Results will be saved in $file"

for adr in {a..z}{a..z}{a..z} {a..z}{a..z}{a..z}{a..z}
do
    name="$adr.com"
    printf "Checking %s ...\r" "$name"
    r=$(get_answers_number "$name")
    if ((r==0)); then
        echo "Found $name            "
        echo "$name" >&3
    fi
done 3>| "$file"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2023-03-23
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多