Linux: Verificando a comunicação entre três hosts

0

Eu gostaria de encontrar um comando Linux que eu pudesse escrever um bash para testar a comunicação entre três (ou mais servidores).

Minha necessidade é mostrada no cenário abaixo:

Source  Gateway Dest
Host A  Host B1 Host C1
Host A  Host B2 Host C2
Host A  Host B3 Host C3

Eu tenho um host A que terá um bash para testar a comunicação do host B1 para C1, C2 e C3, do que a comunicação do host B2 para C1, C2 e C3 e assim por diante.

Este teste pode ser um único ping ou traceroute que eu tentei sem sucesso até agora.

    
por Emerson Soares 25.07.2016 / 17:05

1 resposta

0

Não tenho certeza se é a solução mais elegante, mas você pode simplesmente colocar um "checkconnections.sh" em cada um dos seus B1 a Bx, que executa pings nos respectivos servidores e verifica se o resultado é 0% de perda de pacote ou não:

ping -c 3 192.168.0.34 | grep " 0.0% packet loss"

Nota: sistemas diferentes aparecem para imprimir os resultados do ping em diferentes formatos, então verifique se grep "0.0% de perda de pacotes" realmente captura a saída do seu sistema!

Se o resultado estiver vazio, sua conexão falhou. Se não for, a conexão deve estar ok. Diga ao script para escrever um arquivo de saída / log.

Você pode então colocar um statuscollection.sh no seu Host A, que percorre todas as caixas B1 até Bx, executa os scripts de verificação lá e coleta os arquivos de log posteriormente.

ssh user@boxBx 'path/to/checkconnections.sh'
scp user@boxBx:path/to/log.file destination/Bxlog.file

Para que isso funcione, você precisará configurar a autenticação baseada em chaves ( link ).

Espero que isso faça sentido.

Editar: Dependendo da autenticação baseada em chave (veja acima) e você conhecer os endereços IP de todas as caixas (B1 a Bx) e Hosts (C1 a Cx), o seguinte pode funcionar:

#!/bin/bash

echo "Beginning connection tests."

# create / clear log file
echo "" > results.log

for boxip in [list IPs of your boxes B1 to Bx here]
do
  for hostip [list IPs of your hosts C1 to C2 here]
  do  
    echo "Checking connection from $boxip to $hostip:" >> results.log
    ssh user1@b$boxip 'ping -c 3 $hostip | grep " 0% packet loss"' >> results.log
    echo "--------------------------------" >> results.log
  done
done

Para mais informações sobre os loops, consulte o exemplo 11-1 aqui: link

    
por 26.07.2016 / 12:30

Tags