Tecnicamente falando, o host pode estar "vivo" (definir vivo?) sem responder aos pedidos de ping ICMP. Por exemplo. Você pode bloquear o tráfego ICMPv4 e ICMPv6 no firewall (seletivamente, ainda permitindo as coisas cruciais como a descoberta PMTU), sem quaisquer efeitos adversos.
Mesma coisa com tentativas de conexão TCP. Se você estiver tentando se conectar a uma porta aleatória, poderá obter três resultados diferentes:
-
Conexão bem-sucedida. Anfitrião está vivo.
-
Conexão recusada. Anfitrião está vivo.
-
A conexão expira. O host está off-line ou bloqueia tentativas de conexão nessa porta ou a conexão falhou devido a algum outro problema de rede.
Como você pode discriminar entre 3 possibilidades diferentes em # 3?
Método para "pingar" via TCP ou UDP
Você pode "forçar" o traceroute a fazer um tipo de "ping" via TCP ou UDP:
traceroute -6 -f 30 -T ipv6.google.com
traceroute to ipv6.google.com (2001:4860:8005::69), 30 hops max, 80 byte packets
30 pz-in-x69.1e100.net (2001:4860:8005::69) 87.299 ms 87.257 ms 87.208 ms
Mesma solicitação, somente via UDP falhará:
traceroute -6 -f 30 -U ipv6.google.com
traceroute to ipv6.google.com (2001:4860:8005::63), 30 hops max, 80 byte packets
30 * * *
Você só precisará canalizar os resultados para o grep, se precisar disso em um script.