Eine effizientere Lösung wie 1. Curl 2. Ping 3. Whois wäre toll.
Beiträge von Gravity
-
-
Guten Abend!
Kann einer mal drüber schauen ob er ein Logik-Fehler findet?
Bin für jede Verbesserung dankbar.
Grüße und danke
FrankBash
Alles anzeigen#!/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