Sobes.tech
Junior

Uzaq və ya yerli hostda portun açıq olub olmadığını necə yoxlamaq olar?

sobes.tech Süni İntellekt

AI-dan cavab

Uzaq və ya yerli hostda açıq portu yoxlamaq üçün aşağıdakı üsullardan istifadə edə bilərsiniz:

  1. netcat (nc): Şəbəkə əlaqələri ilə işləmək üçün ümumi vasitə.

    • Yerli host:
      nc -zv localhost <port>
      
    • Uzaq host:
      nc -zv <uzaq_host> <port>
      

    -z (sıfır-I/O rejimi) və -v (detallı) seçimləri, məlumat göndərmədən skan etmək və ətraflı məlumat göstərmək üçün istifadə olunur.

  2. telnet: Uzaqdan idarəetmə protokolu, göstərilən portda əlaqəni yoxlamaq üçün istifadə edilə bilər.

    • Yerli host:
      telnet localhost <port>
      
    • Uzaq host:
      telnet <uzaq_host> <port>
      

    Əgər əlaqə qurulursa (adətən bir dəvət və ya boş sətir görünür), port açıqdır. Bağlamaq üçün Ctrl+], sonra quit və Enter düyməsini basın.

  3. nmap: Güclü port skaneri. Quraşdırma tələb edir.

    • Yerli host:
      nmap -p <port> localhost
      
    • Uzaq host:
      nmap -p <port> <uzaq_host>
      

    Çıxış portun vəziyyətini göstərəcək: open, closed və ya filtered.

  4. < /dev/tcp və ya < /dev/udp (Bash-də): Bash-da fayl deskriptorlarından istifadə edərək TCP və ya UDP əlaqələri qurmaq mümkündür.

    • Yerli host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<port>" 2>/dev/null && echo "Port <port> açıq" || echo "Port <port> bağlı"
      
    • Uzaq host (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<uzaq_host>/<port>" 2>/dev/null && echo "Port <port> açıq" || echo "Port <port> bağlı"
      

    timeout port bağlıdırsa, donmamaq üçün istifadə olunur. 2>/dev/null xətaları gizlədir. Bu metod UDP üçün işləməz.

  5. Python: Soketlərdən istifadə edərək yoxlama.

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Timeout təyin et
        try:
            s.connect((host, port))
            print(f"{host} üzərində {port} portu açıqdır")
        except (socket.timeout, ConnectionRefusedError):
            print(f"{host} üzərində {port} portu bağlı və ya filtrlenmişdir")
        finally:
            s.close()
    
    # Nümunə istifadə
    check_port("localhost", 80)       # Yerli hostu yoxlamaq
    check_port("google.com", 443)  # Uzaq hostu yoxlamaq
    

Yöntəm seçimi mövcud alətlərə, əməliyyat sisteminə və vəzifənin xüsusiyyətlərinə bağlıdır. netcatnmap ən çevik və məlumatlandırıcı vasitələrdən biridir.