pengembangan-web-mp-pd.com

Bagaimana saya mencari tahu apakah port tersedia di Ubuntu 8.04?

Apakah ada perintah yang bisa saya jalankan dari bash yang akan memberi tahu saya apakah port sudah terbuka?

28
Codebeef

Gunakan "netstat" untuk memeriksa port saat ini menggunakan.

netstat -antp 
 
 Proto Recv-Q Kirim-Q Alamat Lokal Alamat Asing PID/Nama program 
 tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0.0:* LISTEN 16297/bernama 
 Tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* DENGARKAN 16297/bernama 
 Tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0: * LISTEN 16297/bernama 
 Tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 16297/bernama 
37
Caterpillar

Ini (netstat) adalah solusi tercepat ...

netstat -lnt

... tapi ini memberi Anda lebih banyak kontrol (dengan biaya kecepatan (kadang-kadang banyak kecepatan)) ...

lsof -n -i -a -u www-data

Contoh di atas misalnya menunjukkan semua port TCP terbuka dan dalam status LISTEN, DAN (-a) milik Apache (www-data) pengguna.

13
Xerxes

Semua jawaban bagus.

Namun Anda tidak menyebutkan apakah Anda masuk ke komputer yang dimaksud. ; P

Jika tidak, maka nmap adalah teman Anda.

untuk pemula coba:

nmap -Otarget

amap juga merupakan pilihan yang baik yang juga akan mencoba menebak perangkat lunak server dengan meraih halaman spanduk.

untuk pemula coba:

amaptarget1-6000

8
Matthew

Mencoba

lsof -i :<port number>

Jika Anda mendapatkan hasil apa pun, ada sesuatu yang mendengarkan dan terikat, misalnya

# lsof -i :80
COMMAND   PID   USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nginx    1833 nobody    3u  IPv4 51091229      0t0  TCP odessa.cheney.net:http->79.173.188.214:52918 (ESTABLISHED)
nginx    1833 nobody    5u  IPv4 46221856      0t0  TCP odessa.cheney.net:http->66.36.243.182:37876 (CLOSE_WAIT)
nginx    1833 nobody    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx    1833 nobody   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)
nginx    1833 nobody   14u  IPv4 46221857      0t0  TCP odessa.cheney.net:http->66.36.243.182:37880 (CLOSE_WAIT)
nginx    1833 nobody   15u  IPv4 51091030      0t0  TCP odessa.cheney.net:http->msnbot-65-55-106-132.search.msn.com:51708 (ESTABLISHED)
nginx   11832   root    9u  IPv4 34733048      0t0  TCP localhost.localdomain:http (LISTEN)
nginx   11832   root   10u  IPv4 34733049      0t0  TCP odessa.cheney.net:http (LISTEN)
7
Dave Cheney
netstat -tlnp  

Perlihatkan tcp port yang listening, tampilkan nhanya saja (tidak menyelesaikan nama - membuatnya lebih cepat) dan memperlihatkan proses p yang sedang melakukan mendengarkan (p hanya berfungsi jika Anda root)

netstat -ulnp  

Perlihatkan udp port yang listening, tampilkan nhanya saja (tidak menyelesaikan nama - membuatnya lebih cepat) dan menunjukkan proses p yang sedang melakukan mendengarkan (p hanya berfungsi jika Anda root)

netstat -unp  

Perlihatkan udp port yang terbuka tetapi tidak mendengarkan, tunjukkan nbanyak saja (jangan selesaikan nama- membuatnya lebih cepat) dan tunjukkan proses p yang sedang mendengarkan ( p hanya berfungsi jika Anda root)

netstat -an

Perlihatkan asemua port sedang digunakan, tampilkan nbanyak saja - tidak menyelesaikan nama

lsof -i <proto>@<Host>:<port>

misalnya

lsof -i [email protected]:25

untuk melihat apakah ada yang mendengarkan di port localhost 25/TCP, atau

lsof -i [email protected]:636 

untuk melihat apakah ada soket baik lokal atau jarak jauh baik mendengarkan (lokal) atau terhubung (lokal atau jauh) untuk Host/antarmuka

4
Jason Tan

lsof (daftar file yang terbuka) adalah alat yang baik untuk melihat apakah suatu proses mendengarkan pada port

lsof -P | grep: <port-number>

netstat adalah alat yang baik untuk melihat apakah ada koneksi aktif.

netstat -n | grep: <port-number>

2
Jamie

Saya menggunakan fuser (dalam paket psmisc):

fuser -n tcp PORT

Membawa kembali pid dari proses terikat ke port ini.

Jika ini untuk mengetahui apakah suatu port sedang mendengarkan, telnet yang baik yang baik melakukan trik :)

telnet 127.0.0.1 PORT

2
Oct

Anda tidak menyebutkan protokol apa yang ingin Anda gunakan, yaitu TCP atau UDP - dan juga penting untuk menyadari bahwa "port" tidak cukup granular yang didukung oleh sistem untuk mengacaukan soket. Contoh: jika sistem Anda memiliki beberapa alamat IP maka port 80 mungkin digunakan pada semua alamat IP (baik aplikasi telah terikat ke "0.0.0.0" atau "::" atau ke setiap alamat IP berturut-turut), atau mungkin sedang digunakan hanya pada subset dari alamat IP tersebut.

Cara terbaik, dan paling pasti, untuk menentukan apakah port/alamat itu gratis dan tersedia adalah berusaha mengikatnya. Netcat berguna untuk ini.

nc -l [-s a.b.c.d] -p NN

akan berusaha untuk mengikat ke TCP port NN aktif (opsional, default akan menjadi semua alamat) a.b.c.d. Tambahkan opsi -u untuk melakukan hal yang sama di UDP.

Selanjutnya, untuk mengetahui apakah port benar-benar "terbuka" seperti yang Anda minta - Anda harus mulai melihat aturan firewall potensial. Sekali lagi yang termudah adalah mencoba terhubung ke port. Gunakan netcat seperti di atas, di server, dan dari klien gunakan netcat untuk mencoba menghubungkan ke port yang Anda buka.

nc [-u] a.b.c.d NN

akan terhubung ke port NN pada a.b.c.d, menggunakan UDP jika flag -u ditentukan. Anda kemudian dapat mengetik input ke ujung klien, dan itu akan muncul di server. Jika tidak, Anda perlu melihat alat khusus sistem dan jaringan.

2
colmmacc

One-liner ini akan memberi Anda daftar semua port TCP sedang digunakan. Ia bekerja di bash di Ubuntu dan OS X.

netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq

Daftar ini akan memiliki satu port per baris tanpa informasi tambahan.

2
Josiah Johnston

Banyak cara melakukannya memberi saya masalah karena mereka tidak bekerja di linux dan osx, dan/atau karena mereka tidak menunjukkan port yang digunakan oleh buruh pelabuhan, atau proses yang dimiliki oleh root. Sekarang saya hanya menggunakan program javascript ini:

(pastikan Anda telah menginstal node dan itu bekerja dengan node bukan hanya nodejs atau mengubah program yang sesuai)

simpan yang berikut ini ke file bernama check-port di jalur Anda atau di proyek Anda

#!/usr/bin/env node
var http = require('http');
var app = new http.Server();
app.listen(process.argv[2], () => {
  process.exit(0)
});

mengatur izin

chmod +x path/to/check-port

lari dari jalurmu

check-port 8080

atau lari dari direktori yang sama

./check-port 8080

sejauh ini bekerja dengan cukup baik.

0
Alex028502