TOC:
- Usando bash e
timeout
- Usando
nc
- Comando
- RHEL 6 (nc-1,84)
- RHEL 7 (nmap-ncat-6.40)
- Observações
Usando bash e timeout
:
Observe que ele timeout
deve estar presente no RHEL 6+ ou é encontrado alternativamente no GNU coreutils 8.22. No MacOS, instale-o usando brew install coreutils
e use-o como gtimeout
.
Comando:
$ timeout $TIMEOUT_SECONDS bash -c "</dev/tcp/${HOST}/${PORT}"; echo $?
Se você estiver parametrizando o host e a porta, especifique-os como ${HOST}
e ${PORT}
acima. Não os especifique meramente como $HOST
e $PORT
, ou seja, sem os aparelhos; não vai funcionar neste caso.
Exemplo:
Sucesso:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/80"; echo $?
0
Falha:
$ timeout 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
124
Se você deve preservar o status de saída de bash
,
$ timeout --preserve-status 2 bash -c "</dev/tcp/canyouseeme.org/81"; echo $?
143
Usando nc
:
Observe que uma versão incompatível com versões anteriores nc
é instalada no RHEL 7.
Comando:
Observe que o comando abaixo é único, pois é idêntico para o RHEL 6 e 7. É apenas a instalação e a saída que são diferentes.
$ nc -w $TIMEOUT_SECONDS -v $HOST $PORT </dev/null; echo $?
RHEL 6 (nc-1,84):
Instalação:
$ sudo yum install nc
Exemplos:
Sucesso:
$ nc -w 2 -v canyouseeme.org 80 </dev/null; echo $?
Connection to canyouseeme.org 80 port [tcp/http] succeeded!
0
Falha:
$ 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 o nome do host for mapeado para vários IPs, o comando com falha acima percorrerá muitos ou todos eles. Por exemplo:
$ 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):
Instalação:
$ sudo yum install nmap-ncat
Exemplos:
Sucesso:
$ 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
Falha:
$ nc -w 2 -v canyouseeme.org 81 </dev/null; echo $?
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connection timed out.
1
Se o nome do host for mapeado para vários IPs, o comando com falha acima percorrerá muitos ou todos eles. Por exemplo:
$ 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
Observações:
O argumento -v
( --verbose
) e o echo $?
comando são obviamente apenas para ilustração.