GNU/Linux >> Belajar Linux >  >> Linux

Memeriksa Banyak Port Saat Menjalankan NetCat (nc)

Saya menggunakan -w 1 di bawah ini untuk membatasi waktu tunggu hingga 1 detik. Saya juga menggunakan -v untuk alasan yang disebutkan dalam komentar. Saya menggunakan -n untuk menolak penundaan pencarian DNS terbalik...

[[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] ~]$

Jika Anda menyukai GNU Parallel seperti saya, coba ini:

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

Contoh Keluaran:

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

Metode ini juga lebih cepat dalam beberapa kasus karena menguji koneksi ke port secara paralel, bukan serial. Secara khusus ini akan menjadi tempat host jarak jauh (atau firewall yang mengintervensi) membuang paket Anda agar tetap tersembunyi (berlawanan dengan koneksi yang berhasil atau penolakan paksa).

Kiat: di sebagian besar distro Linux, Anda dapat menginstal parallel dari manajer paket Anda.

Perbarui: Dengan parallel , ini menggeneralisasi dengan sangat baik untuk mencakup kasus banyak host x banyak port yang sering dibutuhkan. Contoh berikut menggunakan parallel untuk mengulangi produk silang, jadi Anda tidak perlu menulis loop bersarang apa pun.

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

Keluaran:

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

Sama seperti contoh sebelumnya, parallel mengeksekusi tes koneksi secara paralel. Perhatikan, paralelisme default adalah berapa banyak utas yang dimiliki sistem Anda, tetapi dapat diganti dengan mudah dengan -j beralih ke nilai apa pun. Anda dapat dengan mudah menggunakan parallel -j 50 ... atau bahkan lebih tinggi karena menguji soket bukanlah tugas intensif CPU.


Linux
  1. .bash_profile Tidak Bersumber Saat Menjalankan Su?

  2. Menguji layanan jaringan dengan Netcat

  3. Cara menjalankan ssh di banyak port

  1. Cara Menambah atau Menghapus Port ketika firewalld Dinonaktifkan

  2. Periksa port dan proses apa yang berjalan di Ubuntu

  3. Koneksi ditolak ke MongoDB errno 111

  1. Perintah Linux dapatkan port yang tidak digunakan

  2. Bunuh proses yang berjalan di port 80

  3. Menjalankan beberapa utas scp secara bersamaan