Guten Abend!
Kann einer mal drüber schauen ob er ein Logik-Fehler findet?
Bin für jede Verbesserung dankbar.
Grüße und danke
Frank
Bash
#!/bin/bash
# YOU NEED TO INSTALL
# curl , iputils-ping , whois
# CHANGE THE FILETYPE TO SH
# mv filename.txt filename.sh
# MAKE A CHMOD
# chmod +x filename.sh
# VARIABLES
curltrue="curl-true.txt"
curlfalse="curl-false.txt"
pingtrue="ping-true.txt"
pingfalse="ping-false.txt"
whoistrue="whois-true.txt"
whoisfalse="whois-false.txt"
freedomain="freedomains.txt"
curltimeout="1"
pingtimeout="1"
threeletter=false
# DECLARE ALL CHARS
declare -a zeichen=('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '-')
# DECLARE ALL DOMAIN
declare -a domain=('de')
# DEBUG
#declare -a zeichen=('z')
#declare -a zeichen=('a' 'c')
#declare -a domain=('fr')
#declare -a domain=('de', 'fr', 'name')
# INFO MENU
function showMenu() {
# SHOW OUTPUT
echo "which domain? (f.e. de, com)"
# READ
read -p "your choice: " input
# DOMAIN
domain=($input)
# THREE CHARS
read -p "three chars[y:n] " -n 1 temp
# YES
if [[ $temp == "y" || $temp == "Y" ]];
then
echo ""
threeletter=true
else
echo ""
threeletter=false
fi
}
# CREATE INFO FILE
function createInfo() {
# SET DATE
now=$(date)
# IF PARAMETER IS SET
if [ -n "$2" ]
then
# CREATE INFO
echo "$1:$now" >> $2
else
# CREATE INFO E
echo "$1:$now" >> "date.txt"
fi
}
# CREATE EMTPY FOLDER
function createFolder() {
# REMOVE IF EXIST
rm -R -f "$1"
# CREATE NEW
mkdir "$1"
}
# PING
function getPing() {
# PING HOST
if ping -W $pingtimeout -q -c 1 "$2.$1" 2>&1 | grep -q ', 0% packet loss';
then
# OUTPUT INFO
echo "$2 found"
# SAVE TO FILE
echo "$2" >> ./$1/$pingtrue
else
# OUTPUT INFO
echo "$2 not found"
# SAVE TO FILE
echo "$2" >> ./$1/$pingfalse
fi
}
# TIMEOUT
function getTimeout() {
# RUN COMMAND
$1 &
# WAIT PARAMETER SECONDS
sleep $2
# CLOSE COMMAND
kill $!
}
# CURL
function getCurl() {
# REQUEST
header=`curl -m $curltimeout -I -s $2.$1`
# FOUND?
if [ -n "$header" ];
then
# OUTPUT INFO
echo "$2.$1 found"
# SAVE TO FILE
echo "$2.$1" >> ./$1/$curltrue
else
# OUTPUT INFO
echo "$2.$1 not found"
# SAVE TO FILE
echo "$2.$1" >> ./$1/$curlfalse
fi
}
# CURL REQUEST
function curlRequest() {
# GO THROUGH CHARS
for char1 in "${zeichen[@]}"
do
if [ $char1 != "-" ]
then
# CURL REQUEST
getCurl $1 $char1
# GO THROUGH CHARS 2
for char2 in "${zeichen[@]}"
do
if [ $char2 != "-" ]
then
# CURL REQUEST
getCurl $1 "$char1$char2"
fi
if [ "$threeletter" = true ]
then
# GO THROUGH CHARS 3
for char3 in "${zeichen[@]}"
do
if [ $char3 != "-" ]
then
# CURL REQUEST
getCurl $1 "$char1$char2$char3"
fi
done
fi
done
fi
done
}
# PING REQUEST
function pingRequest() {
# IF FILE EXIST
if [ -f ./$1/$curlfalse ]
then
# READ ERROR FILE
while read line
do
# PING REQUEST
getPing $1 $line
#echo $line
done < ./$1/$curlfalse
else
echo "file does not exist $1/$curlfalse"
fi
}
# WHOIS
function getWhois() {
# WHOIS HOST
whois "$2.$1" | egrep -q -i \
'^No match|^NOT FOUND|^Not fo|AVAILABLE|^No Data Fou|has not been regi|No entri'
# TEMP '^domain not found|^was not found|^available|^not registered|^not been registered|^nothing found|^no matching|^no match|^no data found|^invalid|^no entries found|^status: free|^no object found|^do not have an entry|^no such domain|^object_not_found|^does not exist in database|^is free|^no information avaiable|^domain name not known|^not found'
if [ $? -eq 0 ];
then
# OUTPUT INFO
echo "$2 not found"
# SAVE TO FILE
echo "$2" >> ./$1/$whoisfalse
else
# OUTPUT INFO
echo "$2 found"
# SAVE TO FILE
echo "$2" >> ./$1/$whoistrue
fi
}
# WHOIS REQUEST
function whoisRequest() {
# IF FILE EXIST
if [ -f ./$1/$pingfalse ]
then
# READ ERROR FILE
while read line
do
# WHOIS REQUEST
getWhois $1 $line
#echo $line
done < ./$1/$pingfalse
else
echo "file does not exist $1/$pingfalse"
fi
}
# INFO REQUEST
function infoRequest() {
# IF FILE EXIST
if [ -f ./$1/$whoisfalse ]
then
# READ FILE
while read line
do
# SAVE TO FILE
echo "$line" >> ./$freedomain
# OUTPUT
echo $line
done < ./$1/$whoisfalse
else
echo "nothing found"
fi
}
##################################################
################### START
##################################################
# SHOW MENU
showMenu
# FOR EVERY DOMAIN
for d in "${domain[@]}"
do
# INFO
echo "###############"
echo "DOMAIN: $d"
echo "###############"
# CREATE FOLDER
createFolder $d
# CREATE FILE WITH DATE
createInfo "$d:curl"
# INFO
echo "###############"
echo "STEP 1 - CURL"
echo "###############"
# CURL REQUEST
curlRequest $d
# CREATE FILE WITH DATE
createInfo "$d:ping"
# INFO
echo "###############"
echo "STEP 2 - PING"
echo "###############"
# PING REQUEST
pingRequest $d
# CREATE FILE WITH DATE
createInfo "$d:whois"
# INFO
echo "###############"
echo "STEP 3 - WHOIS"
echo "###############"
# WHOIS REQUEST
whoisRequest $d
# CREATE FILE WITH DATE
createInfo "$d:info"
# INFO
echo "###############"
echo "STEP 4 - FREE ($d)"
echo "###############"
# WHOIS REQUEST
infoRequest $d
done
# CLEAR SCREEN
clear
# OUTPUT
echo "### FREE DOMAIN ###"
# IF FILE EXIST
if [ -f ./$freedomain ]
then
# SHOW FREE FILES
cat ./$freedomain
else
# NOTHING FOUND
echo "NOTHING FOUND"
fi
Alles anzeigen