Sobes.tech
Junior

Алыс же жергиликтүү хостто порт ачык экенин кантип текшерсе болот?

sobes.tech AI

AIден жооп

Ачык портту текшерүү үчүн алыстагы же жергиликтүү хостто төмөнкү ыкмаларды колдонсо болот:

  1. netcat (nc): Тармактык байланыштарды иштетүү үчүн универсалдуу инструмент.

    • Жергиликтүү хост:
      nc -zv localhost <порт>
      
    • Алыстагы хост:
      nc -zv <алыстагы_хост> <порт>
      

    -z (zero-I/O mode) жана -v (verbose) опциялары маалыматтарды жибербестен сканерлөө жана кеңири маалымат көрсөтүү үчүн колдонулат.

  2. telnet: Алыстагы башкаруу протоколу, белгилүү порт аркылуу байланышту текшерүү үчүн колдонулат:

    • Жергиликтүү хост:
      telnet localhost <порт>
      
    • Алыстагы хост:
      telnet <алыстагы_хост> <порт>
      

    Эгер байланыш орнотулса (адатта чакыруучу же бош сап пайда болот), порт ачык. Жабуу үчүн Ctrl+], андан кийин quit жана Enter басыңыз.

  3. nmap: Күчтүү порт сканери. Орнотуу талап кылынат:

    • Жергиликтүү хост:
      nmap -p <порт> localhost
      
    • Алыстагы хост:
      nmap -p <порт> <алыстагы_хост>
      

    Натыйжада порттун абалы көрсөтүлөт: open, closed же filtered.

  4. < /dev/tcp же < /dev/udp (Bash): Bashта TCP же UDP байланышын түзүү үчүн файл дескрипторлорун колдонсо болот:

    • Жергиликтүү хост (TCP):
      timeout 1 bash -c "cat < /dev/tcp/localhost/<порт>" 2>/dev/null && echo "Port <порт> is open" || echo "Port <порт> is closed"
      
    • Алыстагы хост (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<алыстагы_хост>/<порт>" 2>/dev/null && echo "Port <порт> is open" || echo "Port <порт> is closed"
      

    timeout жабдыктын кармалышын алдын алуу үчүн колдонулат, ал эми 2>/dev/null каталардын чыгышын жашырат. Бул ыкма UDP үчүн иштебейт.

  5. Python: Сокеттерди колдонуу:

    import socket
    
    def check_port(host, port):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)  # Тайм-аутту орнотуу
        try:
            s.connect((host, port))
            print(f"Port {port} on {host} is open")
        except (socket.timeout, ConnectionRefusedError):
            print(f"Port {port} on {host} is closed or filtered")
        finally:
            s.close()
    
    # Колдонуу мисалы
    check_port("localhost", 80)       # Жергиликтүү хостту текшерүү
    check_port("google.com", 443)  # Алыстагы хостту текшерүү
    

Ыкма тандалган инструменттерге, операциялык тутумга жана милдеттин өзгөчөлүгүнө жараша болот. netcat жана nmap эң ийкемдүү жана маалыматтуу инструменттер болуп саналат.