Para verificar a conectividade do servidor, você tem 4 ferramentas à sua disposição.
-
ping
Isso verificará se algum dos servidores com os quais você está tentando se conectar, mas não poderá ver se o middle-server-1 pode acessar o server-b, por exemplo.
Você pode bloquear por quanto tempo o ping tentará fazer ping em outro servidor através do uso do interruptor de contagem (
-c
). Limitá-lo a 1 deve ser suficiente.$ ping -c 1 skinner PING skinner (192.168.1.3) 56(84) bytes of data. 64 bytes from skinner (192.168.1.3): icmp_req=1 ttl=64 time=5.94 ms --- skinner ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 5.946/5.946/5.946/0.000 ms
Você pode verificar o status desse comando por meio do uso dessa variável,
$?
. Se tem o valor 0, então foi bem sucedido, qualquer outra coisa e ocorreu um problema.$ echo $? 0
-
traceroute
Outro comando que você pode usar para verificar a conectividade é
traceroute
.$ traceroute skinner traceroute to skinner (192.168.1.3), 30 hops max, 60 byte packets 1 skinner (192.168.1.3) 0.867 ms 0.859 ms 0.929 ms
Mais uma vez, esta ferramenta não mostrará a conectividade através de um servidor para outro (mesmo problema que o ping), mas mostrará o caminho através da rede que você está levando para chegar a outro servidor.
-
ssh
ssh
pode ser usado emBatchMode
para testar a conectividade. ComBatchMode=yes
, você tentará se conectar a outro servidor, ignorando o uso de nome de usuário / senhas e somente chaves públicas / privadas. Isso normalmente acelera bastante as coisas.$ ssh -o "BatchMode=yes" skinner
Você pode construir um forro aproximado que verificará a conectividade com um servidor:
$ ssh -q -o "BatchMode=yes" skinner "echo 2>&1" && echo $host SSH_OK || echo $host SSH_NOK SSH_OK
Se funcionar, você receberá uma mensagem
SSH_OK
, se falhar, você receberá uma mensagemSSH_NOK
.Uma alternativa para esse método é incluir também a opção
ConnectTimeout
. Isso evitará que o clientessh
demore muito tempo. Algo como isso normalmente é aceitável,ConnectTimeout=5
. Por exemplo:$ ssh -o BatchMode=yes -o ConnectTimeout=5 skinner echo ok 2>&1 ok
Se falhar, será algo como isto:
$ ssh -o BatchMode=yes -o ConnectTimeout=5 mungr echo ok 2>&1 ssh: connect to host 192.168.1.2 port 22: No route to host
Ele também definirá o status de retorno:
$ echo $? 255
-
telnet
Você pode usar este teste para ver se um servidor
ssh
está acessível em outro servidor usando apenas um% básicotelnet
:$ echo quit | telnet skinner 22 2>/dev/null | grep Connected Connected to skinner.