2014-10-31 70 views
0

我目前正在嘗試編寫一個腳本來寫出它檢測到可用的域。第一個想法是寫出包含「NXDOMAIN」的任何內容,但最後包含了我發現我無法註冊的域名,所以我也添加了對「a.gtld-servers.net」的要求。問題是,這些條件都在域名上得到滿足,已經註冊了。關於我可以用來過濾我的結果的想法,我是新鮮的想法。用bash檢查域名可用性

有沒有人有任何想法?這裏是我的代碼:

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 
+0

順便說一句:'爲V IN {a到z} {... Z} {... Z };做echo $ v;完成' – Cyrus 2014-11-01 00:00:20

+0

謝謝 - 我知道我的腳本編寫效率非常低 - 但它完成了我需要的循環工作。不得不添加睡眠0.01s,它沒有讓我的電腦崩潰。我認爲它隨RAM而跑。 任何想法RE:我的問題? – Jack 2014-11-01 00:06:40

+0

刪除'&'或在第一個'done'後添加一個帶'wait'的新行, – Cyrus 2014-11-01 00:07:46

回答

3

這裏是一個似乎工作的腳本:

#! /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"