Главная Файлы Форум Галерея Гостевая книга Обратная связь Карта сайта Поиск
 

 

Моё место работы

СитиСервис
  • Заправка и ремонт лазерных картриджей
  • Ремонт любых принтеров и копиров
  • Оригинальные и совместимые картриджи
  • Доставка бесплатно (от 2-х картриджей)
  • Накопительная система расчётов для корпоративных клиентов
Телефон
+7 (4722) 373-983
8-980-326-01-23
Адрес E-mail
mybelpost@gmail.com

Привет, Гость

Войти
Идентификация
Я забыл свой пароль
Регистрация

Разделы -> Статьи -> Linux - разное -> Журналирование отклю...

Журналирование состояния сети Internet

Журналирование вкючений или отключений сети Internet под Linux.
Провайдер стал часто отключать сеть. А для подачи заявки в службу тех. поддержки необходимо иметь журнал отключений. Вот данная ситуация и сподвигла меня на автоматизацию процесса журналирования.

Описание bash-скрипта журналирования отключений сети Internet

Назначение скрипта: ведение недельного журнала включений / отключений сети Internet, архивирование файлов журнала каждый понедельник. Квот на размер архивов нет, следите за наличием свободного места на жестком диске!

Данный сценарий запускается по cron-у, потому нужно сделать соответствующую запись в файле /etc/crontab.
Для этого запускаем терминал с правами root и командуем

echo "*/1 * * * *   root    /usr/bin/netctrl" >> /etc/crontab # Ежеминутный запуск скрипта

А сам скрипт должен быть размещён в каталоге /usr/bin.
Если данный сценарий разместить в другом месте файловой системы Linux, то придётся исправить путь к файлу в строке запуска прописанной в crontab.

Как работает bash-скрипт журналирования сети Internet?

   Скрипт пингует IP-адрес указанный в переменной $ip_for_ping и по результату вносит строку с датой и состоянием в файл /var/tmp/netctrl_log/netctrl.
Записывается в журнал только факт изменения, т.е. если последняя запись и текущее состояние наличия сети одинаковы, то новая запись не состоится.
Также данный сценарий сдвигает журналы по суткам. Т.е. файл /var/tmp/netctrl_log/netctrl соответствует текущим суткам, а файл /var/tmp/netctrl_log/netctrl.0 соответствует вчерашним суткам и так далее до файла /var/tmp/netctrl_log/netctrl.5
Каждый понедельник скрипт архивирует все файлы журналов сформированные за неделю. Архиву присваивается имя включающее дату архивации.

Что необходимо исправить в скрипте журналирования перед использованием?

В bash-скрипте журналирования отключений сети Internet имеется несколько переменных содержимое, которых необходимо исправить перед использованием.

Описание переменных

ip_for_ping="10.31.1.129"; # IP-адрес, который будем пинговать. В данном случае указан ip-адрес моего шлюза - замените его обязательно!

logpath="/var/tmp/netctrl_log"; # Путь к каталогу журналов для этого скрипта (в /var/tmp файлы сохраняются после перезагрузки, а просто в /var или /tmp - нет).

organisation="МБОУ СОШ № 17 г. Белгорода"; # Короткое наименование организации для заголовка файла журнала (Сменить обязательно).

Окавычивание значений переменных обязательно!

Разместив файл netctrl в /usr/bin необходимо дать ему права на выполнение, к примеру вот так (из консоли от root):

chmod 755 /usr/bin/netctrl

Архив со скриптом качаем отсюда.

Ниже приведён листинг bash-скрипта журналирующего отключения сети Internet


  • 11 октября 2013 в скрипте исправлена ошибка ротации журналов (теперь журналы сохраняются после перезагрузки)
  • 17 декабря 2013 года в скрипт добавлена архивация недельных журналов каждый понедельник
  • 24 декабря 2013 года исправил ошибку в формировании архива. - Теперь архив формируется в понедельник один раз, а не каждую минуту

Скрипт можете использовать и изменять по Вашему усмотрению без ограничений!


#! /bin/bash
#
# Скрипт может находиться в любом доступном для cron месте, к примеру, в /usr/bin
# В файле /etc/crontab необходимо прописать строку запуска данног скрипта
# к прмеру, строка запуска скрипта каждую минуту выглядит вот так: */1 * * * *   root   /usr/bin/netctrl
#

ip_for_ping="10.31.1.129"; # IP-адрес, который будем пинговать
logpath="/var/tmp/netctrl_log"; # Путь к каталогу журналов для этого скрипта (в /var/tmp файлы сохраняются после перезагрузки)
organisation="МБОУ СОШ № 17 г. Белгорода"; # Короткое наименование организации для заголовка файла журнала

# Проверка наличия файла журнала
if ! [ -f $logpath/netctrl ]; then
mkdir $logpath;
echo "# Журнал наличия И-нет $organisation за `date | awk '{ print $1, $3,  $2, $6 }'`." > $logpath/netctrl;
touch $logpath/netctrl.0;
touch $logpath/netctrl.1;
touch $logpath/netctrl.2;
touch $logpath/netctrl.3;
touch $logpath/netctrl.4;
touch $logpath/netctrl.5;
else
# Если файл журнала есть, то проверяем его на дату создания и если нужно делаем ротацию
    day=$(date | awk '{ print $1 }');
    if [ $day = "Mon" ] || [ $day = "Пон" ]; then
        cd $logpath;
        if [ ! -f ./netctrl-`date +%d.%m.%y`.tgz ]; then
            tar czf ./netctrl-`date +%d.%m.%y`.tgz netctrl netctrl.0 netctrl.1 netctrl.2 netctrl.3 netctrl.4 netctrl.5;
        fi
    fi


    if ! [ `date -r $logpath/netctrl +%d%m%y` = `date +%d%m%y` ]; then 
        mv $logpath/netctrl.4 $logpath/netctrl.5;
        mv $logpath/netctrl.3 $logpath/netctrl.4;
        mv $logpath/netctrl.2 $logpath/netctrl.3;
        mv $logpath/netctrl.1 $logpath/netctrl.2;
        mv $logpath/netctrl.0 $logpath/netctrl.1;
        cp -f $logpath/netctrl $logpath/netctrl.0;
        echo "# Журнал наличия И-нет $organisation за `date | awk '{ print $1, $3,  $2, $6 }'`." > $logpath/netctrl;
    fi
fi

ping -q -c 1 -w 2 $ip_for_ping > /dev/null

if [ $? -ne 0 ] ; then
    if [ `tail -n 1 $logpath/netctrl | awk '{ print $1 }'` != "Disconnect" ]; then
        echo "Disconnect :  "`date` >> $logpath/netctrl;
    fi
else
    if [ `tail -n 1 $logpath/netctrl | awk '{ print $1 }'` != "Connect" ]; then
        echo "Connect : "`date` >> $logpath/netctrl;
    fi
fi

exit 0;







Опубликовано: Константин, Автор/источник: Сакрюкин К.В. 09 Октябрь 2013 10:25:52

Комментировать

Вы не залогинены! Регистрация

Афоризмы, мысли

Сражение за право читать идёт уже сегодня.

/Столлман Ричард Мэттью/

Счётчик

Сейчас на сайте - 1 (0 зарег.)
Всего хитов1084 
Сегодня хитов1084 
Сегодня хостов289 

Откуда гости наши?

 
Powered by ReloadCMS 1.5.0.
© 2004-2012 ReloadCMS Team
RSS AggregationPHP powered
Генерация страницы: 0.24
  Яндекс.Метрика
    Сакрюкин К.В.   Яндекс цитирования    
 
Здесь всё можно копировать и цитировать, но рабочая ссылка на мой сайт обязательна!