То, как я могу проверить с помощью ping-запросов список дюйм/с, нашло в mysql базе данных от удара?
У меня есть таблица, названная зарубками, содержащими эти поля:
Вот как я построил свое приложение для мониторинга (часть, которая использует сообщения ICMP для извлечения живого хоста). В моем случае сервер mysql (MariaDB) работает на той же машине, что и приложение.
В этом cron я использую только 2 поля (ipv4 и icmp). Поле icmp используется для определения того, следует ли отслеживать этот номер или нет.
Вот сценарий:
#!/bin/bash
#variables
SQL_U=username
SQL_P=password
SQL_D=database
mysql -u ${SQL_U} -p${SQL_P} -D ${SQL_D} -e "SELECT ipv4 FROM nics WHERE icmp=1;" | while IFS= Все результаты вставляются в таблицу с именем ping. В котором я вставляю ip, результат пинга в двоичном виде (0 = потеря, 1 = получено), дата создания и изменения. С помощью этого скрипта я могу отслеживать около 100 ips (пока) каждые 5 минут и собирать статистику. Имейте в виду, что я использую fping вместо ping на машине растяжения Debian. Из-за множества функций.
\t' read ipv4;
do
if [ "$ipv4" != "ipv4" ]; then
PING_IP=$ipv4
PING_LOSS=0
PING_TEST=$(fping -c 1 -p 20 ${PING_IP} | awk '{ print $1 }')
if [ "$PING_TEST" = "$PING_IP" ]; then
PING_LOSS=1
fi
PING_C=$(date +"%Y-%m-%d %H:%M:%S")
mysql -u ${SQL_U} -p${SQL_P} -D ${SQL_D} -e "INSERT INTO ping (ipv4, loss, created, modified) VALUES ('${PING_IP}', '${PING_LOSS}', '${PING_C}', '${PING_C}');"
fi
done
Все результаты вставляются в таблицу с именем ping. В котором я вставляю ip, результат пинга в двоичном виде (0 = потеря, 1 = получено), дата создания и изменения. С помощью этого скрипта я могу отслеживать около 100 ips (пока) каждые 5 минут и собирать статистику. Имейте в виду, что я использую fping вместо ping на машине растяжения Debian. Из-за множества функций.