Jump to content
tmi

Kody skryptów do sprawdzania domen wg hosta

Recommended Posts

Witam,

 

Kody skryptów do sprawdzania domen wg hosta w bashu:

 

#!/bin/bash

plik=lista.txt;
x=1;

while [ ${x} -le `cat ${plik} | wc -l` ]; do
host `sed -n -e ${x}p $plik` >> wynik.txt

x=$[x + 1]
done

 

lista.txt - lista domen do sprawdzenia

wynik.txt - sprawdzone domeny

 

Nastepnie domeny bez hosta można znaleźć używając cat wynik.txt | grep NXDOMAIN > wolnebezhosta.txt. Można jeszcze elegancko wyciąć słowa takie jak Host, not found: 3(NXDOMAIN) i pozostaje nam czysta lista.

 

 

I w PHP:

 

<?php


$fp = fopen("wynik.txt", "w");
$tablica=file('lista.txt');
for ($x=1;$x<=count($tablica);$x++) { 
$host = gethostbyname(trim($tablica[$x]));
if($host==trim($tablica[$x])) $wolna=1; else $wolna=0;
if($wolna==1){


fwrite($fp, $tablica[$x]."\n");
}

}
fclose($fp);
?>

 

pliki wynik.txt i lista.txt tak samo jak w przypadku 1 skryptu.

Share this post


Link to post
Share on other sites

Szybkie sprawdzania domen po hoście w bashu:

 

for i in `cat listadomen.txt`; do dig "$i" @serwer_nazw | grep NX >/dev/null && echo "$i" && echo "$i" >>listawolnych_`date +%y%m%d`.txt; done

 

W miejscu @serwer_nazw można wstawić IP najszybszego dla nas serwera nazw (najczęściej będzie to DNS naszego dostarczyciela internetu), można też usunąć cały ten parametr (razem z @).

 

Formułka && echo "$i" >>listawolnych_`date +%y%m%d`.txt zapisuje wyniki narastająco do pliku o nazwie np. listawolnych_070806.txt, można ją usunąć jeśli wyniki mają być tylko wyświetlone na ekranie.

 

Aha, oczywiście w miejsce listadomen.txt należy wstawić nazwę pliku z listą domen, które chcemy sprawdzić. ;-)

 

Wynikiem sprawdzania jest lista domen wolnych oraz w postępowaniu, bardzo rzadko wpadną na nią domeny, które mają coś pochrzanione, np. nie mają przypisanych DNS-ów albo są w trakcie modyfikacji i nie działają poprawnie.

 

Generator x-literówek wrzucę później.

Share this post


Link to post
Share on other sites

I już program TopDomain jest bezużyteczny :( Jak dobrze, że mój program sprawdza czy domena jest naprawdę wolna, a nie bawi się w jakies sprawdzanie hosta ;)

Share this post


Link to post
Share on other sites
Jak dobrze, że mój program sprawdza czy domena jest naprawdę wolna, a nie bawi się w jakies sprawdzanie hosta :(

 

To tylko jedna linijka więcej, w dodatku krótsza. ;-)

Share this post


Link to post
Share on other sites
To tylko jedna linijka więcej, w dodatku krótsza. ;-)

 

Wcale nie. Napisz tu i przedstaw np. liste wolnych imion, taka jaka ja przedstawilem w dziale wolne domeny (imiona wez z wikipedii).

Share this post


Link to post
Share on other sites

Ja myślę że każde imię jest już przez kogoś zajęte :(

Share this post


Link to post
Share on other sites
Ja myślę że każde imię jest już przez kogoś zajęte ;)

 

:(

Share this post


Link to post
Share on other sites

Przeciez alfons.biz byla wolna ;) A moze jeszcze jest :(

 

Alfonsowi nie udalo sie jeszcze zajac swojej domeny :o

 

btw: rozumiem ukryte przeslanie ;)

Ale przeciez w USA coraz wiecej ludzi nazywa sie nazwami jakichs rzeczy..

Pani zlewozmywak

Pan pedzaca chmura ;)

 

 

Czyli cos jednak jeszcze zostalo :o

Share this post


Link to post
Share on other sites
Przeciez alfons.biz byla wolna ;) A moze jeszcze jest :(

 

Alfonsowi nie udalo sie jeszcze zajac swojej domeny :o

 

btw: rozumiem ukryte przeslanie ;)

Ale przeciez w USA coraz wiecej ludzi nazywa sie nazwami jakichs rzeczy..

Pani zlewozmywak

Pan pedzaca chmura ;)

Czyli cos jednak jeszcze zostalo :o

 

 

krotsza lista polskich, wolnych imion *.pl (ponad 100) jest pod adresem

http://wolnedomeny.net/wolne_domeny.php?opcja=7

Share this post


Link to post
Share on other sites

Tak pierwsza z brzegu: Apolinary.pl

Widzę, że temat kogoś zainspirował bo Wincenty.pl i Gwidon.pl były wolne jak niedawno sprawdzałem a teraz oczekują w kolejce na rejestrację. :( Wskazówka dla tego co tego (dla tych?) co je zarejestrował: jak dobrze poszukasz to znajdziesz coś jeszcze. ;)

 

EDIT:

Ups, sorki, nie zauważyłem listy ryskadowa, opierałem się na własnych danych. ;) Widzę, że moja lista imion była nieco uboga.

EDIT2:

Żeby ten mój post nie był totalnym spamem dorzucę moją wersję skryptu:

#!/bin/bash

for domena in `cat $2`;
do
 wynik=`host $domena.$1 | grep -c 'NXDOMAIN'`
 if [ $wynik -eq 1 ]; then
    echo $domena.$1
 fi
done

Wywołanie: skrypt rozszerzenie plik.txt > wyniki.txt

Plik.txt to lista domen bez rozszerzeń.

Share this post


Link to post
Share on other sites
<?php
$fp = fopen("wynik.txt", "w");
$tablica=file('lista.txt');
for ($x=1;$x<=count($tablica);$x++) { 
$host = gethostbyname(trim($tablica[$x]));
if($host==trim($tablica[$x])) $wolna=1; else $wolna=0;
if($wolna==1){
fwrite($fp, $tablica[$x]."\n");
}

}
fclose($fp);
?>

 

pliki wynik.txt i lista.txt tak samo jak w przypadku 1 skryptu.

 

 

mala uwaga! skrypy pomija pierwszy element z pliku

poprawic na for ($x=0;$x<count($tablica);$x++)

 

 

i drugi problem jaki napotkalem to dla

skryptu odpalanego z serwera webd.pl funkcja gethostbyname zawsze zwraca numer IP (jak znajdzie hosta i jak na 100% go nie ma) , ale dla hostow nieistniejacych zwraca IP serwera webd.pl

 

sprawdzalem z dwoch roznych sieci komputerowych

 

 

 

natomiast skrypt odpalany z serwera efuturo.pl dziala poprawnie i dla wolnych domen zwraca nazwa hosta

 

 

gdzie moze tkwic problem w konfiguracji skryptu / serwera w webd.pl ? zebym mogl o czym pogadac z adminem webd.pl ?

Share this post


Link to post
Share on other sites
i drugi problem jaki napotkalem to dla

skryptu odpalanego z serwera webd.pl funkcja gethostbyname zawsze zwraca numer IP (jak znajdzie hosta i jak na 100% go nie ma) , ale dla hostow nieistniejacych zwraca IP serwera webd.pl

 

No to po prostu sprawdzaj sobie jakie IP dostałeś w odpowiedzi i jeżeli to będzie adres webd to przyjmuj, że domena nie istnieje. Co prawda w ten sposób pokaże Ci, że domeny zaparkowane na webd są wolne, ale to będzie chyba na tyle niewielki odsetek, że nie będzie z tym problemu. Jako ciekawostkę podam, że dla nieistniejących domen .ws zwracany jest IP organizacji promującej to rozszerzenie (nigdy nie dostaniemy NXDOMAIN). Tak więc modyfikacja skryptu może się przydać w przyszłości.

Share this post


Link to post
Share on other sites
No to po prostu sprawdzaj sobie jakie IP dostałeś w odpowiedzi i jeżeli to będzie adres webd to przyjmuj, że domena nie istnieje. Co prawda w ten sposób pokaże Ci, że domeny zaparkowane na webd są wolne, ale to będzie chyba na tyle niewielki odsetek, że nie będzie z tym problemu. Jako ciekawostkę podam, że dla nieistniejących domen .ws zwracany jest IP organizacji promującej to rozszerzenie (nigdy nie dostaniemy NXDOMAIN). Tak więc modyfikacja skryptu może się przydać w przyszłości.

 

 

tak tez poczatkowo robilem, ze IP providera traktowalem jak wolna domene, ale wtedy ok 15% domen bylo wolnych , a faktycznie 2-3%

 

ale w miedzyczasie sprawdzilem dzialanie funkcji dig , i chyba dziala dobrze na obu serwerach,....nie znam jeszcze jej wad:)

 

 

$ip = `/usr/bin/dig $host A +short`;

jesli pusty ciag to domena moze byc wolna

Share this post


Link to post
Share on other sites
Generator x-literówek wrzucę później.

 

Przypomniałem sobie... no to proszę:

 

for i in {0..9} {a..z}; do for j in {0..9} {a..z}; do echo "$i$j.pl" >>lista.txt; done; done

 

To da nam listę wszystkich możliwych domen dwuznakowych. Żeby uzyskać dwuliterowe, wystarczy usunąć oba {0..9}, a dla dwucyfrowych – odwrotnie. :-)

 

Analogicznie można wygenerować wszystkie domeny 3-, 4-, x-znakowe, np.:

 

for i in {a..z}; do for j in {a..z}; do for k in {a..z}; do echo "$i$j$k.pl" >>lista.txt; done; done; done

 

da nam listę możliwych domen trzyliterowych.

 

Proste? Proste. ;-)

 

Oczywiście komendy do wykonania w bashu, jeśli ktoś ma Windows, to musi zainstalować zestaw programów Cygwin. Aczkolwiek skrypty są równie proste do napisania w innych językach programowania.

Share this post


Link to post
Share on other sites

używają polecenia

 

for i in `cat listadomen.txt`; do dig "$i" @serwer_nazw | grep NX >/dev/null && echo "$i" && echo "$i" >>listawolnych_`date +%y%m%d`.txt; done

 

wywala mi błąd pisze " line 1: dig: command not fount"

 

może mi ktoś pomóc ?

Edited by djpiatek

Share this post


Link to post
Share on other sites
tylko jest problem bo ja mam windowsa... a to co mi podałeś jest na linux'a o ile się nie myle

 

Możesz skorzystać z live Cd do wyboru do koloru masz B)

Share this post


Link to post
Share on other sites
tylko jest problem bo ja mam windowsa... a to co mi podałeś jest na linux'a o ile się nie myle

 

Hmm, dev/null w windows? B)

 

Jest też oczywiście dig dla windows, wystarczy tylko poguglać trochę - np. http://serghei.net/windows/dig/ - tu są potrzebne pliki i instrukcja, jak odpalić toto w windows.

 

Ale tak czy inaczej z tego Twojego skryptu w windows raczej nie skorzystasz.

Edited by danlis

Share this post


Link to post
Share on other sites
tylko jest problem bo ja mam windowsa... a to co mi podałeś jest na linux'a o ile się nie myle

 

Wystarczy zainstalować cygwin.

Share this post


Link to post
Share on other sites

Cześć,

 

Potrzebuję prosty skrypt w php do sprawdzania domen po hoście. Ten z pierwszego posta mi nie działa nie wiedzieć czemu, a bash z cygwinem to dla mnie czarna magia. ;)

 

Byłbym wdzięczny za pomoc.

 

Pozdrawiam,

Kuba

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×