LinuxForum.Fans
Тема

скрипт для мониторинга наличия интернет

Автор: greyters 4 сообщений 2295 просмотров
#323692

Доброго времени суток!
Руководство поставило задачу отследить периоды, когда на заводе отваливается интернет (дабы в конце месяца излить потоки праведного гнева на провайдера). Сидеть и записывать на бумажку и не хочу и не могу физически (часто приходится отходить от рабочего места). Решил написать скрипт, который пинговал бы google и писал лог.
Вот что получилось:

text

!/bin/bash
ADDR="www.google.ru"
LOGFILE="ping_log"
STATUS=1
CURSTAT=1
while true
do
        if ping -c 1 -s 1 -W 1 $ADDR
        then
                CURSTAT=1
        else
                CURSTAT=0
        fi
        if [[ "$CURSTAT" -ne "$STATUS" ]]
        then
               DATENOW=`date`
                if [[ $CURSTAT -eq 1 ]]
                then
                        sed -i '$a Connection estblihed '$DATENOW'' log_file
                fi
                if [[ $CURSTAT -eq 0 ]]
                then
                        sed -i '$a Connection loss '$DATENOW'' log_file
                fi
        fi
        STATUS=$CURSTAT
done

На выходе получаю ошибку типа (при изменении статуса соединения, т.е. когда должна идти запись в лог файл):

text
sed: невозможно прочитать июн: Нет такого файла или каталога
sed: невозможно прочитать 7: Нет такого файла или каталога
sed: невозможно прочитать 10:00:29: Нет такого файла или каталога
sed: невозможно прочитать MSK: Нет такого файла или каталога
sed: невозможно прочитать 2013: Нет такого файла или каталога

И в лог идет запись

text
Connection loss Пт

Чем-то чувствую, что забыл где-то или запятую поставить, или еще что. Но где?...
Знатоки баша, может кто ткнет носом, где я протупил?
ЗЫ В линуксе относительно новичек, до этого места работы с ним не сталкивался, просьба сильно не пинать)))

#323699
"greyters⇓" написал:
sed -i '$a Connection estblihed '$DATENOW'' log_file

здесь и далее DATENOW в двойных кавычках должно быть...

ЗЫ: я бы поставил какой-нить sleep между пингами,

#323702
greyters написал:
Доброго времени суток!

И вам того же.
Вопрос номер раз: Действительно ли так важно тестить интернет каждую секунду (время отработки одного пинга)? Я бы проверял раз в минуту. Это первое.
Второе: зачем там sed? Не проше ли писать в какой файл через echo bla-bla-bla >> log_file (или logger'ом в syslog)?
И третье - а что стоит за переменной $a?
Ну и последнее: '$a Connection estblihed '$DATENOW'' - считаем "строки". Где строка начинается, где кончается. По моему - перебор с кавычками. Я бы написал так:

text
echo Connection estblished $DATENOW >> log_file
#323709

2Fat-Zer
В двойных кавычках, почему-то, в файл вообще вывода нет.
2Cruiser78
Переписал с echo, все работает)))
2All sleep поставил после проверки, а то неудобно было: отсоединил кабель, ждем 1минуту, подсоединил - еще минута

Спасибо за помощь, вопрос решен)))

Войдите или зарегистрируйтесь, чтобы ответить.