TOC:
- Usando bash y
timeout
- Utilizando
nc
- Mando
- RHEL 6 (nc-1.84)
- RHEL 7 (nmap-ncat-6.40)
- Observaciones
Usando bash y timeout
:
Tenga en cuenta que timeout
debería estar presente con RHEL 6+, o alternativamente se encuentra en GNU coreutils 8.22. En MacOS, instálelo usandobrew install coreutils
y úselo como gtimeout
.
Mando:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Si parametriza el host y el puerto, asegúrese de especificarlos como ${HOST}
y ${PORT}
como se muestra arriba. No los especifique simplemente como$HOST
y $PORT
, es decir, sin las llaves; No funcionará en este caso.
Ejemplo:
Éxito:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Fracaso:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Si debe preservar el estado de salida de bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Utilizando nc
:
Tenga en cuenta que nc
se instala una versión incompatible con versiones anteriores de RHEL 7.
Mando:
Tenga en cuenta que el siguiente comando es único, ya que es idéntico tanto para RHEL 6 como para 7. La instalación y la salida son diferentes.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
RHEL 6 (nc-1.84):
Instalación:
$ sudo yum install nc
Ejemplos:
Éxito:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Fracaso:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
nc: connect to canyouseeme.org port 81 (tcp) timed out: Operation now in progress
1
Si el nombre de host se asigna a varias direcciones IP, el comando de falla anterior pasará por muchas o todas ellas. Por ejemplo:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
nc: connect to microsoft.com port 81 (tcp) timed out: Operation now in progress
1
RHEL 7 (nmap-ncat-6.40):
Instalación:
$ sudo yum install nmap-ncat
Ejemplos:
Éxito:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 52.202.215.126:80.
Ncat: 0 bytes sent, 0 bytes received in 0.22 seconds.
0
Fracaso:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Si el nombre de host se asigna a varias direcciones IP, el comando de falla anterior pasará por muchas o todas ellas. Por ejemplo:
$ nc -w 2 -v microsoft.com 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection to 104.43.195.251 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.100.122.175 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 23.96.52.53 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection to 191.239.213.197 failed: Connection timed out.
Ncat: Trying next address...
Ncat: Connection timed out.
1
Observaciones:
El argumento -v
( --verbose
) y el echo $?
comando son, por supuesto, solo ilustrativos.