GNU/Linux >> Tutoriales Linux >  >> Linux

Comando de Linux obtener puerto no utilizado

netstat -lat da la lista completa de escuchando y establecido puertos

Cuando un puerto no está en ninguno de esos estados, no existe para el sistema, por lo que no encontrará un comando que muestre la lista de puertos no utilizados.

Tenga en cuenta que hay 65535 puertos, por lo que cualquier cosa que no esté en netstat -lat es un puerto sin usar.

El siguiente script bash hará un escaneo simple de tcp puertos y hacerle saber cuáles están abiertos y cuáles están cerrados :

#!/bin/bash
IP=$1
first_port=$2
last_port=$3
function scanner

{
for ((port=$first_port; port<=$last_port; port++))
        do
                (echo >/dev/tcp/$IP/$port)> /dev/null 2>&1 && echo $port open || echo "$port closed"
        done
}

scanner

Si lo guarda como portscan.sh entonces debe ejecutarse como ./portscan.sh IP first_port last_port , por ejemplo:./portscan 127.0.0.1 20 135 escaneará el equipo local desde los puertos 20 al 135


Ruby 2.x (una sola línea):

ruby -e 'require "socket"; puts Addrinfo.tcp("", 0).bind {|s| s.local_address.ip_port }'

En mi máquina en este momento que imprimió:

42644

Una invocación posterior impresa:

36168

Esta técnica hace que el usuario actual solicite un puerto no utilizado (vinculado al puerto "0") y luego imprime el número de puerto que proporcionó el sistema operativo. Y dado que el usuario actual es el que pregunta, los puertos por debajo de 1024 no se devolverán (a menos que el usuario actual =root).

Crédito donde se debe el crédito:esta solución proviene de un comentario de Franklin Yu en unix.stackexchange.com ¿Cuál es la forma más fácil de encontrar un puerto local no utilizado?


Script bash corto que genera aleatoriamente un número entre 1025 y 60000 y se repite hasta que ese número no se encuentra en la lista de puertos usados. Esta es una solución rápida y sucia que tiene un sesgo hacia los puertos más grandes:

CHECK="do while"

while [[ ! -z $CHECK ]]; do
    PORT=$(( ( RANDOM % 60000 )  + 1025 ))
    CHECK=$(sudo netstat -ap | grep $PORT)
done

echo $PORT

Linux
  1. comando linux mv

  2. Linux du comando

  3. Comando IP de Linux

  4. Comando cd de linux

  5. Obtenga una lista de puertos abiertos en Linux

Al mando en Linux

Cómo hacer un escaneo de puertos en Linux

Obtener información sobre un comando con tipo de comando en Linux

¿Cómo comprobar los puertos abiertos en Linux?

Abrir un puerto en Linux

5 métodos para obtener ayuda rápida sobre los comandos de Linux