Запись состояния «онлайн/офлайн» в файл журнала

Запись состояния «онлайн/офлайн» в файл журнала

Я ищу способ локально регистрировать состояние хоста Linux (онлайн/офлайн) в файле журнала.

Я пытался использовать pingэто, но он не регистрировал тайм-ауты/сброшенные пакеты, а только показывал успешные передачи: ping -D 8.8.8.8 | awk 'NR>1 { printf strftime("%c", $0) "%s",$2; }' RS=[ FS=]

Mi 14 Okt 2015 13:03:06 CEST 64 bytes from 8.8.8.8: icmp_req=155 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:03:07 CEST 64 bytes from 8.8.8.8: icmp_req=156 ttl=55 time=18.6 ms
Mi 14 Okt 2015 13:03:08 CEST 64 bytes from 8.8.8.8: icmp_req=157 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:05:19 CEST 64 bytes from 8.8.8.8: icmp_req=244 ttl=55 time=18.4 ms
Mi 14 Okt 2015 13:05:20 CEST 64 bytes from 8.8.8.8: icmp_req=245 ttl=55 time=18.4 ms

Поэтому мне приходится внимательно смотреть на номера запросов, чтобы определить состояния офлайн.

Кто-нибудь знает лучший способ сделать это или может назвать подходящий инструмент?

Заранее спасибо.

решение1

Уже существует множество инструментов, которые это делают, например, Munin, Nagios и т. д. Я не понимаю, зачем переделывать колесо, но если вам нужно решение в виде оболочки, вот оно:

#!/bin/bash

logfile="/var/log/up-or-down.log";
ip_address_for_testing="192.168.1.10";

while [[ true ]]; do
    ping -c 5 $ip_address_for_testing;
    if [[ $? -eq 0 ]]; then
        echo "IP status for ${ip_address_for_testing}: UP" >> $logfile;
    else
        echo "IP status for ${ip_address_for_testing}: DOWN" >> $logfile;
    fi;
    sleep 5;
done;

Приведенный выше пример отправит 5 ECHO-ЗАПРОСОВ на хост, определенный в $ip_address_for_testing, и если все пойдет хорошо, он запишет в $logfile, если он запущен или выключен. Сохраните его в файл, дайте ему права на выполнение с помощью chmod и вызовите его через /etc/rc.local или /etc/rcS.d (если вы выберете второй вариант, вам придется сохранить его в /etc/init.d и создать на него символическую ссылку), если вы хотите запустить его во время загрузки.

Ура!

Связанный контент