The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Является ли скрипт корректным?"
Отправлено skb7, 13-Авг-13 02:05 
> Пока придумал такое, может, не очень изящное решение
> Делается 2 скрипта:
> 1. Запускается один раз при старте системы, проверяет сеть и записывает значение в файл > с именем сс, например.
> 2. Проверят, допустим раз в 5 минут

Ну, скрипт будет тот же самый (а не 2).
Я бы сделал так:


#!/bin/sh

# "ip" can be passed from crontab or be read from some config file
ip=8.8.8.8
count=1
prev_is_site_up=0
cur_is_site_up=0
var_file=/tmp/prev-is-site-up

write_var() {
        echo -n "$1" > $var_file
}

read_var() {
        cat $var_file
}

# Returns 1 if site is up, 0 -- site is down
test_site() {
    res=$(ping -c ${count} ${ip} | tail -2 | head -1 | awk '{print $4}') \
        2> /dev/null
    if [ "$res" = $count ]; then
        return 1
    else
        return 0
    fi
}

notify() {
    if [ $cur_is_site_up -eq 1 ]; then
        echo "The website is up" | festival --tts
    else
        echo "The website is down" | festival --tts
    fi
}

do_site_check() {
    test_site
    cur_is_site_up=$?

    if [ ! -e $var_file ]; then
        write_var $cur_is_site_up
        notify
        exit 0
    fi

    prev_is_site_up=$(read_var)
    if [ $cur_is_site_up -ne $prev_is_site_up ]; then
        write_var $cur_is_site_up
        notify
    fi
}

do_site_check

В /etc/crontab нужно вызывать этот скрипт с использованием блокировки (с помощью flock); например:


* * * * * root /usr/bin/flock -n /tmp/check-site-lock -c '/tmp/check-site.sh'

При старте системы особого смысла вызывать этот скрипт в принципе не вижу, особенно если он каждую минуту будет запускаться. Но если и вызывать, то использовать такую же блокировку, как и в /etc/crontab.

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру