Linux'ta ağ komut satırlarını kullanmadan, açık portların listesini ve bunlara sahip olan süreci nasıl bilebilirsiniz?


11

Hangi portların gömülü Linux'ta hangi işlemler tarafından kullanıldığını bilmek istiyorum. Basit gömülü linux olduğundan, netstat, lsof gibi bir ağ komut satırı yoktur. (yalnızca cat, cp, echo vb. gibi temel komut satırları vardır).

Kısmi bir çözüm, "cat / proc / net / tcp" ve "cat / proc / net / udp" komut satırlarını kullanıyor gibi görünüyor. Ancak, bu komut satırlarından yazdırılan listenin kullanılan tüm bağlantı noktalarını gösterdiğinden emin değilim ve liste hangi işlemin belirli bağlantı noktasına bağlandığını göstermez .

Herhangi bir yorum mutluluk duyacağız.


Bu sorunun Unix ve Linux

Yanıtlar:


15

Sen tüm açık portları bulmak mümkün olmalıdır /proc/net/tcpve /proc/net/udp. Bu dosyaların her birinin inode, o sokete sahip olan işlemi bulmak için kullanılabilecek bir sütunu vardır.

Bir inode numaranız olduğunda, ls -l /proc/*/fd/* | grep socket:.$INODEbu soketi kullanarak işlemleri bulmak gibi bir ls komutu çalıştırabilirsiniz . Farklı iş parçacıkları için farklı dosya tanımlayıcılarıyla bir işlem ayarlandıysa, ls -l /proc/*/task/*/fd/* | grep socket:.$INODEhepsini bulmak için komutu genişletmeniz gerekebilir .


1
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
Sammitch

0

Herhangi bir port için INODES'i bulmak için aşağıdaki komutu yürütün

PORT=8080;cat /proc/net/* | awk -F " " '{print $2 ":" $10 }' | grep -i `printf "%x:" $PORT` | awk -F ":" '{print "PORT=" $2 ", INODE=" $3 }'

Aşağıdaki gibi ilişkili PID'yi bulmak için yukarıdaki komut çıkışından herhangi bir INODE kullanın

find /proc -lname "socket:\[$INODE\]" 2> /dev/null | head -n 1 | awk -F "/" '{print "PID="$3}'

burada $ INODE herhangi bir INODE

Tek satırlı bir komutta, herhangi bir portun açık olup olmadığını ve herhangi bir PID ile ilişkili olup olmadığını aşağıdaki gibi kontrol edebiliriz

PORT=8080;find /proc -lname "socket:\[$(cat /proc/net/* | awk -F " " '{print $2 ":" $10 }' | grep -i `printf "%x:" $PORT` | head -n 1 | awk -F ":" '{print $3}')\]" 2> /dev/null | head -n 1 | awk -F "/" '{print "PID="$3}'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.