Ask me anything
Ithy Logo
Sign in to save

Automatyczne monitorowanie dostępności domeny w DNS - kompleksowy skrypt Bash

Kontroluj propagację DNS i dowiedz się natychmiast, kiedy Twoja domena jest gotowa do użycia

bash-script-dns-domain-availability-check-nii3t1t6

Kluczowe informacje

  • Natychmiastowa weryfikacja DNS - sprawdź czy Twoja domena została już rozpoznana i jest dostępna w systemie DNS
  • Wielokrotne automatyczne sprawdzanie - skrypt monitoruje dostępność domeny w określonych odstępach czasu
  • Elastyczna konfiguracja - łatwe dostosowanie parametrów sprawdzania do własnych potrzeb

Kompletny skrypt do monitorowania DNS

Poniższy skrypt w Bash pozwala na monitorowanie dostępności domeny w systemie DNS. Automatycznie wykrywa, kiedy wpisy DNS dla Twojej domeny zostały już propagowane i domena jest dostępna.

#!/bin/bash

# ======================================================
# Skrypt monitorujący dostępność domeny w DNS
# ======================================================

# Sprawdzenie, czy podano argument
if [ $# -ne 1 ]; then
  echo "Użycie: $0 <nazwa_domeny>"
  echo "Przykład: $0 example.com"
  exit 1
fi

# Konfiguracja
DOMENA=$1
TYP_REKORDU="A"
ODSTEP_CZASU=60  # Interwał sprawdzania w sekundach
MAKS_PROB=10     # Maksymalna liczba prób

# Funkcja sprawdzająca DNS przy użyciu dig
sprawdz_dig() {
  local wynik=$(dig +short "$DOMENA" "$TYP_REKORDU")
  if [ -n "$wynik" ]; then
    echo "✓ Znaleziono rekord $TYP_REKORDU dla domeny $DOMENA: $wynik"
    return 0
  else
    echo "✗ Brak rekordu $TYP_REKORDU dla domeny $DOMENA"
    return 1
  fi
}

# Funkcja sprawdzająca DNS przy użyciu nslookup
sprawdz_nslookup() {
  local wynik=$(nslookup "$DOMENA" | grep "Address:" | tail -n1 | awk '{print $2}')
  if [ -n "$wynik" ]; then
    echo "✓ nslookup potwierdza dostępność domeny $DOMENA: $wynik"
    return 0
  else
    echo "✗ nslookup nie może zidentyfikować domeny $DOMENA"
    return 1
  fi
}

# Główna pętla sprawdzania
echo "🔍 Rozpoczynam sprawdzanie dostępności DNS dla domeny: $DOMENA"
echo "⏱️ Będę sprawdzać co $ODSTEP_CZASU sekund, maksymalnie $MAKS_PROB razy"
echo "====================================================================="

liczba_prob=0
while [ $liczba_prob -lt $MAKS_PROB ]; do
  liczba_prob=$((liczba_prob + 1))
  echo -e "\n📡 Próba $liczba_prob z $MAKS_PROB:"
  
  # Sprawdzanie za pomocą dig
  if sprawdz_dig; then
    # Dodatkowe sprawdzenie za pomocą nslookup dla pewności
    if sprawdz_nslookup; then
      echo -e "\n🎉 SUKCES! Domena $DOMENA jest dostępna w DNS."
      echo "⏰ Czas oczekiwania: $((liczba_prob * ODSTEP_CZASU / 60)) min $((liczba_prob * ODSTEP_CZASU % 60)) sek"
      exit 0
    fi
  fi
  
  # Jeśli to nie ostatnia próba, czekaj
  if [ $liczba_prob -lt $MAKS_PROB ]; then
    echo -e "⏳ Domena jeszcze nie jest dostępna. Czekam $ODSTEP_CZASU sekund..."
    sleep $ODSTEP_CZASU
  fi
done

echo -e "\n❌ Brak sukcesu po $MAKS_PROB próbach."
echo "🔧 Sprawdź poprawność nazwy domeny lub skontaktuj się z dostawcą usług DNS."
exit 1

Jak używać skryptu

Aby skorzystać z powyższego skryptu, wykonaj następujące kroki:

  1. Zapisz kod w pliku, np. sprawdz_dns.sh
  2. Nadaj plikowi uprawnienia do wykonania: chmod +x sprawdz_dns.sh
  3. Uruchom skrypt, podając nazwę domeny jako argument: ./sprawdz_dns.sh twojadomena.pl

Skrypt będzie sprawdzał dostępność domeny co 60 sekund (domyślnie) i zakończy działanie, gdy domena będzie dostępna w DNS lub gdy osiągnie maksymalną liczbę prób.


Jak działa sprawdzanie DNS

Poniższy diagram pokazuje, jak działa proces propagacji DNS i jak nasz skrypt sprawdza dostępność domeny:

mindmap root["Sprawdzanie dostępności DNS"] Metody["Metody sprawdzania"] dig["Polecenie dig"] options["Opcje: +short, +trace"] record_types["Typy rekordów: A, MX, NS"] nslookup["Polecenie nslookup"] simple["Proste zapytanie"] custom_server["Wybór serwera DNS"] host["Polecenie host"] ping["Test ping"] Propagacja["Proces propagacji DNS"] provider["Aktualizacja u dostawcy DNS"] tld["Rozprzestrzenianie do serwerów TLD"] local["Aktualizacja lokalnych DNS"] cache["Czas życia (TTL) w cache"] Monitoring["Automatyczny monitoring"] interval["Interwał sprawdzania"] max_attempts["Maksymalna liczba prób"] notifications["Powiadomienia o statusie"]

Diagram przedstawia główne metody sprawdzania DNS, proces propagacji i opcje monitorowania, które uwzględnia nasz skrypt.


Porównanie narzędzi do sprawdzania DNS

Istnieje kilka różnych narzędzi, których możemy użyć do sprawdzania dostępności domeny w DNS. Każde z tych narzędzi ma swoje zalety i wady:

Narzędzie Zalety Wady Przykład użycia
dig Szczegółowe informacje, wiele typów rekordów, elastyczne opcje Może nie być zainstalowane domyślnie na wszystkich systemach dig example.com A +short
nslookup Powszechnie dostępne, proste w użyciu Mniej opcji niż dig, mniej szczegółowe wyniki nslookup example.com
host Bardzo proste, czytelne wyniki Ograniczone opcje host example.com
ping Sprawdza nie tylko DNS, ale także dostępność serwera Nie pokaże szczegółów rekordów DNS, niektóre serwery blokują ping ping -c 1 example.com

W naszym skrypcie używamy głównie dig ze względu na jego wszechstronność i możliwość sprawdzania różnych typów rekordów DNS, z dodatkowym potwierdzeniem przez nslookup.


Wizualizacja skuteczności różnych metod sprawdzania DNS

Poniższy wykres radarowy pokazuje porównanie skuteczności różnych metod sprawdzania DNS pod względem różnych kryteriów:


Obserwacja procesu propagacji DNS

Nasz skrypt sprawdza dostępność domeny w systemie DNS, ale co dokładnie dzieje się podczas propagacji DNS? Poniżej przedstawiam przykładowy widok z narzędzia do sprawdzania propagacji DNS:

Przykładowy obraz stanu propagacji DNS

Wizualizacja propagacji DNS na różnych serwerach

Przykładowa wizualizacja procesu propagacji DNS na różnych serwerach DNS na całym świecie

Raport serwera DNS z wynikami sprawdzania

Przykładowy raport stanu serwera DNS z informacjami o poprawności konfiguracji i szybkości odpowiedzi


Praktyczne wykorzystanie sprawdzania DNS

Sprawdzanie dostępności DNS jest szczególnie przydatne w następujących sytuacjach:

Uruchomienie nowej witryny

Po zakupie nowej domeny i skonfigurowaniu serwera, możesz użyć skryptu do monitorowania, kiedy domena będzie dostępna i gotowa do użycia.

Zmiana dostawcy hostingu

Podczas migracji do nowego dostawcy usług hostingowych, skrypt pomoże Ci monitorować proces propagacji zmian DNS.

Dodawanie subdomen

Kiedy dodajesz nowe subdomeny (np. blog.twojadomena.pl), skrypt pozwoli Ci monitorować, kiedy będą one dostępne.

Rozwiązywanie problemów z DNS

Jeśli masz problemy z dostępnością swojej witryny, skrypt może pomóc zdiagnozować, czy problem leży po stronie konfiguracji DNS.

Wdrożenie w systemach CI/CD

Skrypt można zintegrować z systemami ciągłej integracji/wdrażania, aby automatycznie weryfikować dostępność nowych domen lub subdomen po wdrożeniu.


Weryfikacja DNS z YouTube

Poniższy film prezentuje, jak używać polecenia dig do sprawdzania rekordów DNS, co jest kluczowym elementem naszego skryptu:

W filmie pokazano, jak używać polecenia dig do pobierania informacji o rekordach DNS, co jest podstawową funkcjonalnością naszego skryptu. Warto obejrzeć, aby lepiej zrozumieć, jak działa sprawdzanie DNS za pomocą polecenia dig.


Najczęściej zadawane pytania

Jak długo trwa propagacja DNS?

Czas propagacji DNS może być różny w zależności od wielu czynników. Zazwyczaj trwa od kilku minut do 48 godzin. Główne czynniki wpływające na ten czas to:

  • Ustawienia TTL (Time To Live) w rekordach DNS
  • Dostawca usług DNS i jego serwery
  • Lokalizacja geograficzna
  • Dostawca usług internetowych (ISP) i jego polityka cache DNS

Nasz skrypt pomaga monitorować ten proces, sprawdzając cyklicznie dostępność domeny.

Co zrobić, gdy domena nadal nie jest dostępna po wielu próbach?

Jeśli domena nie jest dostępna nawet po wielu próbach (np. po 24 godzinach), warto sprawdzić:

  • Czy poprawnie skonfigurowano rekordy DNS u dostawcy domeny
  • Czy nie ma błędów w konfiguracji rekordów (np. literówki w nazwie domeny)
  • Czy dostawca domeny potwierdził, że zmiany zostały wprowadzone
  • Czy lokalne cache DNS nie przechowuje starych rekordów (można spróbować wyczyścić cache DNS)

Jeśli problem nadal występuje, najlepiej skontaktować się z dostawcą domeny lub usług DNS.

Czy skrypt działa na wszystkich systemach operacyjnych?

Skrypt został napisany w Bash, więc działa natywnie na systemach Unix/Linux oraz macOS. Aby użyć go na systemie Windows, masz kilka opcji:

  • Zainstalować Windows Subsystem for Linux (WSL)
  • Użyć GitBash, który jest częścią instalacji Git dla Windows
  • Zainstalować Cygwin, który zapewnia środowisko podobne do Linuksa

Dodatkowo, upewnij się, że masz zainstalowane narzędzia `dig` i `nslookup`. Na większości systemów Linux i macOS są one dostępne domyślnie lub jako część pakietu `dnsutils` lub `bind-utils`.

Jak sprawdzić inne typy rekordów DNS niż tylko rekordy A?

Aby sprawdzić inne typy rekordów DNS, wystarczy zmienić wartość zmiennej `TYP_REKORDU` w skrypcie. Najczęściej używane typy rekordów to:

  • A - podstawowy rekord wskazujący na adres IPv4
  • AAAA - rekord wskazujący na adres IPv6
  • CNAME - rekord alias wskazujący na inną nazwę domeny
  • MX - rekord określający serwery pocztowe
  • NS - rekord określający serwery nazw dla domeny
  • TXT - rekord tekstowy, często używany do weryfikacji własności domeny

Aby sprawdzić np. rekordy MX, zmień wartość zmiennej `TYP_REKORDU` na "MX".

Jak zmodyfikować skrypt, aby wysyłał powiadomienia?

Możesz rozszerzyć skrypt o funkcję wysyłania powiadomień na różne sposoby:

  • Powiadomienia e-mail - dodaj komendę `mail` w momencie wykrycia dostępności domeny
  • Powiadomienia Slack/Discord - użyj `curl` do wysłania wiadomości do webhooka Slack/Discord
  • Powiadomienia SMS - możesz zintegrować skrypt z usługami wysyłającymi SMS-y za pomocą ich API
  • Powiadomienia na pulpit - na systemach Linux można użyć `notify-send`

Przykładowo, aby dodać powiadomienie e-mail, dodaj linię:
echo "Domena $DOMENA jest już dostępna w DNS!" | mail -s "Powiadomienie DNS" twoj@email.com
po wykryciu dostępności domeny.


Referencje

Polecane zapytania


Last updated April 3, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI