Bagaimana saya dapat dengan cepat mengetahui apakah port 80 terbuka / mendengarkan pada server melalui skrip bash?
Biasanya pada semua workstation, daemon berjalan, tetapi terkadang gagal. Saya menggunakan perintah berikut untuk memeriksa apakah alamat IP memiliki port terbuka. Saya ingin dapat melakukan ini untuk setiap baris dalam file tanpa harus mengetik secara manual setiap kali.
nc -zw3 10.101.0.13 80 && echo "opened" || echo "closed"
File daftar terlihat seperti ini, di mana 3333
dan 3334
setelahnya adalah string$ip;
10.101.0.13; 3333
10.101.0.15; 3334
10.101.0.17; 4143
10.101.0.21; 1445
10.101.0.27; 2443
10.101.0.31; 2445
10.101.0.47; 3443
10.101.0.61; 3445
Saya harus memisahkan port terbuka dari yang tertutup, jadi saya akan memiliki daftar server gagal yang harus diperbaiki.
Saya mencoba sesuatu seperti ini tanpa hasil:
while IFS=";" read ip port ; do nc -zw3 "$ip" "$port" && echo "$ip:$port => opened" || echo "$ip:$port => closed" ; done < list.txt
while IFS=";" read ip port ; do nc -zw3 "${ip}" "${port}" && echo "${ip}:${port} => opened" || echo "${ip}:${port} => closed" ; done < list.txt
nc -zw3
shell Anda dengan satu port terbuka dan satu port tertutup dan lihat apakah itu benar-benar kembali setelah 3 detik?Connection to localhost 80 port [tcp/http] succeeded!
dan dengan yang buruk, dalam 10 milidetik yang sama saya mendapatkan baris kosong.Jawaban:
Inilah perintah Nmap yang paling mendasar dan efisien untuk melakukan apa yang Anda inginkan (dan tidak lebih):
Sayangnya, Nmap tidak memiliki cara bawaan untuk memindai hanya beberapa port pada beberapa IP dan port lain pada IP lain, jika tidak, ini bisa menjadi jauh lebih sederhana.
sumber
Penggunaan: ./script.sh Memindai file yang ditentukan dan menguji apakah setiap "$ ip; $ port" terbuka atau tertutup.
Jika Anda ingin mengurutkan output: ./script.sh | menyortir
Tidak diperlukan instalasi.
Sebagai satu baris yang dapat Anda tempel ke terminal Anda tanpa harus membuat skrip shell:
sumber
Hal termudah adalah menginstal nmap dari repos, lalu lakukan:
di mana data adalah file dengan alamat IP yang akan dipindai.
Sunting:
Jika benar, seperti yang disarankan @pabouk di bawah, bahwa nomor yang mengikuti alamat IP adalah port yang akan dipindai, maka Anda dapat mencapai pemindaian yang diinginkan sebagai berikut:
Jika Anda ingin memindai kedua port 80, dan port membaca dari file, Anda dapat melakukannya dengan perintah ini:
Jika nmap dianggap menghasilkan terlalu banyak output, perintah follwoing akan melakukan:
sumber
nmap
menghasilkan banyak output (dalam hal ini berlebihan) dengan setiap proses.nmap -oG - ... | grep Ports:
itulah yang saya uji beberapa saat yang lalu. :)