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