GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso verificare quali porte sono occupate e quali porte sono libere sulla mia macchina Linux?

Il comando

netstat -antu

mostrerà tutte le porte tcp e udp in uso. L'output sarà simile a questo:

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN

Il numero dopo i due punti nel campo Indirizzo locale mostra la porta in uso. Se lo stato è "LISTEN" significa una porta che sta usando per le connessioni in entrata. Se l'indirizzo IP nel file Local Address il campo è 0.0.0.0 significa che le connessioni in entrata saranno accettate su qualsiasi indirizzo IP assegnato a un'interfaccia, quindi questo significa da connessioni originate al di fuori della tua macchina.

Se diceva localhost o 127.0.0.1 accetterebbe solo connessioni dalla tua macchina.

Inoltre, se aggiungi -p ed eseguilo come root, mostrerà il processo che ha aperto la porta:

$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:59753           0.0.0.0:*               LISTEN      860/rpc.statd

Tutto ciò che non viene mostrato come in uso è gratuito, tuttavia gli utenti (account non privilegiati) possono aprire solo porte superiori a 1023.


Ho compilato io stesso un piccolo elenco.

Alcuni dei miei preferiti sono:

netstat -tulpn
lsof -i -n -P

Un modo valido e affidabile per controllare le porte aperte è usare ss (sostituisce il deprecato netstat ), è utilizzabile in uno script senza richiedere privilegi elevati (ad esempio sudo ).

Utilizzo:opzione -l per le porte in ascolto, opzione -n per bypassare la risoluzione DNS e il filtro sulla porta di origine NN :src :NN (sostituisci NN dalla porta che si desidera monitorare). Per ulteriori opzioni, vedi man ss

ss -ln src :NN

Esempi:

[[email protected] ~]# ss -ln src :80
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port
LISTEN      0      128                      *:80                *:*
[[email protected] ~]# ss -ln src :81
State       Recv-Q Send-Q       Local Address:Port   Peer Address:Port

E in uno script, usando grep, possiamo verificare se l'output contiene la porta che abbiamo richiesto. Esempio con la porta 80 in uso (vedi sopra):

myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 80 is in use (result == 1)

Esempio con la porta 81 non in uso (vedi sopra)

myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
  echo "Port $myport is in use (result == $result) "
else
  echo "Port $myport is NOT in use (result == $result) "
fi

# output:
Port 81 is NOT in use (result == 0)

Linux
  1. Controlla quali porte e processi sono in esecuzione in Ubuntu

  2. Come verificare su quale porta è in esecuzione MySQL e se può essere connesso?

  3. Come posso verificare se PostgreSQL è installato o meno tramite script Linux?

  4. Come controllare quale fuso orario in Linux?

  5. Come posso verificare se i cgroup sono disponibili sul mio host Linux?

Come controllare l'utilizzo della memoria in Linux

Come eseguire una scansione delle porte in Linux

Come trovare e chiudere le porte aperte in Linux

Come controllare lo spazio libero su disco su Linux [Metodi terminale e GUI]

Come controllare lo spazio libero su disco su Linux

Come controllare le porte aperte in Linux?