Sobes.tech
Junior

Ինչպե՞ս ստուգել, արդյոք պորտը բաց է հեռավոր կամ տեղական հոստում։

sobes.tech AI

Պատասխան AI-ից

Տեղեկատվության բացված պորտի ստուգման համար հեռավոր կամ տեղական հոստի վրա կարող եք օգտագործել հետևյալ մեթոդները:

  1. netcat (nc): Ընդհանուր գործիք ցանցային կապերի համար:

    • Տեղական հոստի համար:
      nc -zv localhost <պորտ>
      
    • Հեռավոր հոստի համար:
      nc -zv <հեռավոր_հոստ> <պորտ>
      

    Ընտրանքներ -z (զրո-Ի/Օ ռեժիմ) և -v (բացատրական) օգտագործվում են տվյալների ուղարկում չանելու և մանրամասն տեղեկատվություն ցուցադրելու համար:

  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 <պորտ> open" || echo "Port <պորտ> closed"
      
    • Հեռավոր հոստի (TCP):
      timeout 1 bash -c "cat < /dev/tcp/<հեռավոր_հոստ>/<պորտ>" 2>/dev/null && echo "Port <պորտ> open" || echo "Port <պորտ> 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 ամենաակտիվ և տեղեկատվական գործիքներն են։