Pendahuluan: Saya telah membuat fungsi bash yang dapat memeriksa apakah port tersedia dan menambahnya dengan 1 jika salah sampai jumlah port maksimum tertentu. Misalnya, jika port 500 tidak tersedia maka ketersediaan 501 akan diperiksa hingga 550.
Tujuan: Untuk menguji fungsi bash ini, saya perlu membuat berbagai port yang dalam status LISTEN.
Mencoba: Pada Windows dimungkinkan untuk membuat port LISTEN menggunakan perintah PowerShell ini :
PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234
PS C:\Users\u> $listener.Start();
PS C:\Users\u> netstat -nat | grep 1234
TCP 0.0.0.0:1234 0.0.0.0:0 LISTENING InHost
PS C:\Users\u> $listener.Stop();
PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u>
Berdasarkan ini saya mencoba untuk memikirkan tentang perintah yang dapat melakukan hal yang sama pada CentOS, tetapi saya tidak tahu mengapa dan saya mulai ke Google tanpa menemukan solusi yang memecahkan masalah ini.
Jawaban yang diharapkan : Saya akan menerima dan memperbaiki jawaban yang berisi perintah yang dapat membuat port LISTEN dan setelah perintah dijalankan port harus tetap dalam status LISTEN, yaitu:
[user@host ~]$ ss -nat | grep 500
LISTEN 0 128 *:500 *:*
sumber
netstat -an --tcp | awk '/LISTEN/ {sub(".*:", "", $4); print $4}' | sort -nu
. Pada * BSD:netstat -an -f inet -p tcp | awk '/LISTEN/ {sub(".*\\.", "", $4); print $4}' | sort -nu
.Jawaban:
Anda dapat menggunakan
nc -l
sebagai metode untuk melakukan apa yang Anda cari. Beberapa implementasinc
memiliki-L
opsi yang memungkinkan koneksi tetap ada.Jika Anda hanya membutuhkannya sebentar, Anda bisa membuka perintah ini dalam satu
for
lingkaran dan membuka banyak port dengan cara itu.Jika Anda membutuhkan ini dibuka lebih lama, Anda dapat menggunakan salah satu server super untuk membuat daemon.
sumber
-L
saya akan menyarankan:-k
,--keep-open
menerima beberapa sambungan dalam modus mendengarkanAnda dapat membuat pendengar port menggunakan Netcat.
Anda juga dapat memeriksa apakah port terbuka atau tidak menggunakan perintah netstat.
Anda juga dapat memeriksa dengan nc:
Pendengar Server Netcat:
Klien Netcat:
jika port tidak terbuka
sumber
-p
atau tidak berfungsi:nc -l -p 1234
/bin/nc --> nc.traditional
(misalnya debian), gunakan-p
opsi, seperti yang disarankan @Leahkim, di atas.Dengarkan menggunakan netcat.
Periksa menggunakan ss
sumber
Perhatikan bahwa
netcat
paket Debian memiliki implementasi yang berbeda di mana (setidaknya) Anda perlu menyediakan port melalui-p
opsi dan-k
opsi tidak berfungsi. Anda mungkin mengalami masalah ini menggunakan Docker.sudo apt install -y netcat
nc -l -p 1337
Anda dapat mempertimbangkan untuk menggunakan
openbsd-netcat
tempat-k
opsi ini bekerja.sumber
Di bawah kode python sangat membantu untuk membuka port dummy
'' 'Server soket sederhana menggunakan utas' '' impor soket impor sys HOST = '' # Nama simbolis, artinya semua antarmuka yang tersedia PORT = 5500 # Port yang non-istimewa sewenang-wenang s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) cetak 'Soket dibuat'
Bind socket ke host dan port lokal
coba: s.bind ((HOST, PORT)) kecuali socket.error sebagai msg: print 'Bind gagal. Kode Kesalahan: '+ str (msg [0]) +' Pesan '+ msg [1] sys.exit () cetak' Socket bind complete '
Mulai mendengarkan pada soket
s.listen (10) cetak 'Socket now listening'
sekarang terus berbicara dengan klien
sementara 1: # tunggu untuk menerima koneksi - memblokir panggilan samb, addr = s.accept () cetak 'Terhubung dengan' + addr [0] + ':' + str (addr [1]) s.close ()
Simpan file dan jalankan dengan perintah python seperti yang ditunjukkan di bawah ini
~] # python portlistener.py Socket dibuat Socket bind Socket lengkap sekarang mendengarkan
Kemudian Anda dapat memverifikasi dari mesin yang diperlukan.
sumber