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 з'яўляюцца аднымі з найбольш гнуткіх і інфарматыўных інструментаў.