Не уверен, является ли это наиболее элегантным решением, но вы могли бы просто поместить "checkconnections.sh" на каждый из ваших B1-Bx, который запускает эхо-запросы к соответствующим другим серверам и проверяет, будет ли результат 0% потери пакета или нет:
ping -c 3 192.168.0.34 | grep " 0.0% packet loss"
Примечание: разные системы, по-видимому, печатают результаты проверки связи в разных форматах, поэтому дважды проверьте, что grep «0.0% потери пакетов» фактически перехватывает вывод вашей системы!
Если результат пуст, ваше соединение не удалось. Если это не так, соединение должно быть в порядке. Скажите сценарию написать файл вывода / журнала.
Затем вы можете поместить файл statuscollection.sh на ваш хост A, который проходит по всем блокам B1-Bx, выполняет там сценарии проверки и впоследствии собирает файлы журнала.
ssh user@boxBx 'path/to/checkconnections.sh'
scp user@boxBx:path/to/log.file destination/Bxlog.file
Чтобы это работало, вам нужно настроить аутентификацию на основе ключей (http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html).
Надеюсь, что это имеет смысл.
Изменить: В зависимости от аутентификации на основе ключей (см. Выше) и от того, что вы знаете IP-адреса всех ящиков (от B1 до Bx) и хостов (от C1 до Cx), может работать следующее:
#!/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
Для получения дополнительной информации о циклах см. Пример 11-1 здесь: http://tldp.org/LDP/abs/html/loops1.html