GNU/Linux >> Znalost Linux >  >> Linux

Zkoumání více portů při spuštění NetCat (nc)

Používám -w 1 níže pro omezení časových limitů na 1 sekundu. Také používám -v z důvodů uvedených v komentářích. Použil jsem -n odmítnout zpoždění pro zpětné vyhledávání DNS...

[[email protected] ~]$ for i in $(echo "172.16.1.1,172.16.1.5"|tr "," "\n"); do echo -e "22\n80\n443\n8080" | xargs -i nc -w 1 -zvn $i {}; done
(UNKNOWN) [172.16.1.1] 22 (ssh) open
(UNKNOWN) [172.16.1.1] 80 (www) : Connection timed out
(UNKNOWN) [172.16.1.1] 443 (https) open
(UNKNOWN) [172.16.1.1] 8080 (http-alt) : Connection timed out
(UNKNOWN) [172.16.1.5] 22 (ssh) open
(UNKNOWN) [172.16.1.5] 80 (www) open
(UNKNOWN) [172.16.1.5] 443 (https) open
(UNKNOWN) [172.16.1.5] 8080 (http-alt) : Connection refused
[[email protected] ~]$

Pokud máte rádi GNU Parallel stejně jako já, zkuste toto:

parallel nc -vz host ::: 22 80 443 8080

Ukázkový výstup:

Connection to foo.example.com 22 port [tcp/ssh] succeeded!
nc: connect to foo.example.com port 80 (tcp) failed: Connection refused
nc: connect to foo.example.com port 443 (tcp) failed: Connection refused
nc: connect to foo.example.com port 8080 (tcp) failed: Connection refused

Tato metoda je také v některých případech rychlejší, protože testuje připojení k portům paralelně, nikoli sériově. Konkrétně by to bylo místo, kde vzdálený hostitel (nebo intervenující firewall) zahodí vaše pakety, aby zůstal utajený (na rozdíl od úspěšného připojení nebo násilného odmítnutí).

Tip: ve většině distribucí Linuxu můžete nainstalovat parallel od správce balíčků.

Aktualizace: S parallel , to velmi dobře zobecňuje, aby pokrylo často potřebný případ více hostitelů x více portů. Následující příklad používá parallel iterovat přes křížový produkt, takže nemusíte psát žádné vnořené smyčky.

parallel nc -vz ::: host1 host2 host3 ::: 22 80 443 8080

Výstup:

Connection to host1 22 port [tcp/ssh] succeeded!
Connection to host1 80 port [tcp/http] succeeded!
Connection to host1 443 port [tcp/https] succeeded!
nc: connect to host1 port 8080 (tcp) failed: Connection refused
Connection to host2 22 port [tcp/ssh] succeeded!
nc: connect to host2 port 80 (tcp) failed: Connection refused
nc: connect to host2 port 443 (tcp) failed: Connection refused
nc: connect to host2 port 8080 (tcp) failed: Connection refused
Connection to host3 22 port [tcp/ssh] succeeded!
nc: connect to host3 port 80 (tcp) failed: Connection refused
nc: connect to host3 port 8080 (tcp) failed: Connection refused
nc: connect to host3 port 443 (tcp) failed: Connection refused

Stejně jako v předchozím příkladu parallel paralelně provádí testy připojení. Všimněte si, že výchozí paralelismus je počet vláken, které má váš systém, ale lze je snadno přepsat pomocí -j přepnout na libovolnou hodnotu. S parallel -j 50 ... byste mohli snadno uniknout nebo dokonce vyšší, protože testování soketů není náročný úkol na CPU.


Linux
  1. Testování síťových služeb pomocí Netcat

  2. Jak spustit ssh na více portech

  3. Zkontrolujte, jaké porty a procesy běží v Ubuntu

  1. Příkaz Linuxu získat nepoužívaný port

  2. Ukončit proces běžící na portu 80

  3. Jaké je maximální číslo portu?

  1. 15 Vysvětlení běžně používaných síťových portů

  2. REJECT vs DROP při použití iptables

  3. Podivné chování historie bash při spuštění více relací