TOC:
- Usando bash e
timeout
- utilizzando
nc
- Comando
- RHEL 6 (nc-1.84)
- RHEL 7 (nmap-ncat-6.40)
- Osservazioni
Usando bash e timeout
:
Nota che timeout
dovrebbe essere presente con RHEL 6+ o che si trova in alternativa nei coreutils GNU 8.22. Su MacOS, installalo usando brew install coreutils
e usalo come gtimeout
.
Comando:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Se si parametrizzano l'host e la porta, assicurarsi di specificarli come ${HOST}
e ${PORT}
come sopra. Non specificarli semplicemente come $HOST
e $PORT
, cioè senza le parentesi graffe; non funzionerà in questo caso.
Esempio:
Successo:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Fallimento:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Se è necessario conservare lo stato di uscita di bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Utilizzando nc
:
Si noti che una versione incompatibile con le versioni precedenti nc
viene installata su RHEL 7.
Comando:
Si noti che il comando seguente è unico in quanto è identico sia per RHEL 6 che per 7. Sono solo l'installazione e l'output a differire.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
RHEL 6 (nc-1.84):
Installazione:
$ sudo yum install nc
Esempi:
Successo:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Fallimento:
$ 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
Se il nome host è associato a più IP, il comando sopra fallito scorrerà attraverso molti o tutti. Per esempio:
$ 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):
Installazione:
$ sudo yum install nmap-ncat
Esempi:
Successo:
$ 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
Fallimento:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Se il nome host è associato a più IP, il comando sopra fallito scorrerà attraverso molti o tutti. Per esempio:
$ 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
Osservazioni:
L' argomento -v
( --verbose
) e il echo $?
comando sono ovviamente solo a scopo illustrativo.