Czy jest jakieś polecenie, które mogę uruchomić z bash, które powie mi, czy port jest już otwarty?
28
Użyj „netstat”, aby sprawdzić aktualnie używane porty.
netstat -antp Proto Recv-Q Send-Q Adres lokalny Adres obcy Stan PID / nazwa programu tcp 0 0 xxx.xxx.xxx.xxx 0.0.0.0:* LISTEN 16297 / named tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / named tcp 0 0 xxx.xxx.xxx.xxx:53 0.0.0.0:* LISTEN 16297 / named tcp 0 0 127.0.0.1:53 0.0.0.0:* SŁUCHAJ 16297 / o nazwie
To (netstat) jest najszybszym rozwiązaniem ...
... ale daje to większą kontrolę (kosztem prędkości (czasem dużej prędkości)) ...
Powyższy przykład pokazuje na przykład, że wszystkie porty TCP są otwarte i znajdują się w
LISTEN
stanie AND (-a
) należącym do użytkownika Apache (www-data
).źródło
Wszystkie dobre odpowiedzi.
Nie wspominasz jednak, czy jesteś zalogowany na danym komputerze. ; P
Jeśli nie, to nmap jest twoim przyjacielem.
na początek spróbuj:
nmap -O
target
amap to także dobry wybór, który spróbuje również odgadnąć oprogramowanie serwera, chwytając strony banerów.
na początek spróbuj:
amap
target
1-6000
źródło
Próbować
Jeśli otrzymasz jakieś wyniki, coś nasłuchuje i wiąże, np
źródło
Pokaż
t
porty cp, którel
powstają, pokażn
tylko umbra (nie tłumacz nazwy - sprawia, że było to szybsze) i pokażp
proces słuchania (p
działa tylko, jeśli jesteś rootem)Pokaż istniejące
u
portyl
DP, pokażn
tylko umbra (nie tłumacz nazwy - przyspieszy) i pokażp
proces nasłuchujący (p
działa tylko, jeśli jesteś rootem)Pokaż
u
porty DP, które są otwarte, ale nie nasłuchują, pokażn
tylko umbra (nie tłumacz nazwy - sprawia, że było to szybsze) i pokaż procesp
, który wykonuje nasłuch (p
działa tylko, jeśli jesteś rootem)Pokaż wszystkie używane
a
porty, pokażn
tylko umbra - nie tłumacz nazwna przykład
aby sprawdzić, czy coś nasłuchuje na porcie localhost 25 / TCP lub
aby sprawdzić, czy są jakieś gniazda lokalne lub zdalne, nasłuchujące (lokalne) lub podłączone do (lokalne lub zdalne) dla dowolnego hosta / interfejsu
źródło
lsof (lista otwartych plików) jest dobrym narzędziem do sprawdzenia, czy proces nasłuchuje na porcie
netstat to dobre narzędzie do sprawdzania, czy są jakieś aktywne połączenia.
źródło
Nie wspominasz o tym, jakiego protokołu chcesz użyć, tj. TCP lub UDP - i ważne jest również, aby zdać sobie sprawę, że „port” nie jest tak szczegółowy, jak system obsługuje jednoznaczne gniazda. Np. Jeśli twój system ma wiele adresów IP, to port 80 może być używany na wszystkich adresach IP (albo aplikacja przypisała „0.0.0.0” lub „::” albo do każdego adresu IP kolejno), lub może być w używaj tylko w podzbiorze tych adresów IP.
Najlepszym i najpewniejszym sposobem ustalenia, czy port / adres jest wolny i dostępny, jest próba połączenia się z nim. Netcat jest do tego przydatny.
spróbuje połączyć się z portem TCP NN na (opcjonalnie, domyślnie będą to wszystkie adresy) abcd Dodaj opcję -u, aby zrobić to samo w UDP.
Następnie, aby zapytać, czy port jest rzeczywiście „otwarty”, musisz zapytać o potencjalne reguły zapory. Znowu najłatwiej jest spróbować połączyć się z portem. Użyj netcat jak wyżej, na serwerze, a od klienta użyj netcat, aby spróbować połączyć się z otwartym portem.
nc [-u] abcd NN
połączy się z portem NN na abcd, używając UDP, jeśli podano opcję -u. Następnie możesz wpisać dane wejściowe na końcu klienta i powinny pojawić się na serwerze. Jeśli nie, musisz zajrzeć do narzędzi specyficznych dla systemu i sieci.
źródło
Używam fuser (w pakiecie psmisc):
Zwraca pid procesu związanego z tym portem.
Jeśli to ma wiedzieć, czy port nasłuchuje, stary dobry telnet załatwia sprawę :)
źródło
Ten jednowierszowy wyświetla listę wszystkich używanych portów TCP. Działa w trybie bash na Ubuntu i OS X.
netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq
Lista będzie miała jeden port na linię bez żadnych dodatkowych informacji.
źródło
for port in $(netstat -ant | sed -e '/^tcp/ !d' -e 's/^[^ ]* *[^ ]* *[^ ]* *.*[\.:]\([0-9]*\) .*$/\1/' | sort -g | uniq); do echo EXECUTE COMMAND FOR PORT $port; done
Wiele sposobów na zrobienie tego sprawiło mi problemy, ponieważ nie działały na Linuksie i Osxie i / lub ponieważ nie pokazały portów używanych przez dokera lub procesów, które były własnością roota. Teraz używam tylko tego programu javascript:
(upewnij się, że masz zainstalowany węzeł i że działa on
node
nie tylkonodejs
lub odpowiednio zmień program)zapisz następujące w pliku nazwanym
check-port
na ścieżce lub w projekcieustawić uprawnienia
uciekaj ze swojej ścieżki
lub uruchom z tego samego katalogu
jak dotąd działa całkiem dobrze.
źródło