Страница 1 из 1

Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:27
Raven
Немного копипаста, чуть-чуть работы мозгами, немного помощи зала и родилось это:

Скрипт пингует DNS-сервер провайдера и при отсутствии соединения пишет в лог, и выводит сообщение о падении сети на экран.

Код: Выделить всё

#!/bin/bash
while test 1
do
echo "Пингуем тотел --> 85.115.192.155"
PING=`ping -c 4 85.115.192.155` 
ret=$?
if [ "$ret" -ne "1" ]; then
echo `date` ", Internet connection normal!"
fi
if [ "$ret" -ne "0" ]; then
echo `date` ", Internet connection down!" >> /var/log/internet.log
killall xconsole
export DISPLAY=:0 && xconsole -daemon -file /var/log/internet.log
fi
sleep 1m  #минутный перерыв, хотя можно закомментировав эту строку запихнуть в крон
done
Возможна также такая редакция (вариант проверяющий сети местных проваков):

Код: Выделить всё

#!/bin/bash
while test 1
do
# Проверяем соединение с Totel
echo "Пингуем Totel"
PING=`ping -c 4 85.115.192.155`
ret=$?
if [ "$ret" -ne "1" ]; then
echo `date` ", Connection to Totel normal!"
fi
if [ "$ret" -ne "0" ]; then
echo `date` ", Connection to Totel down!" >> /var/log/internet.log
killall xconsole
export DISPLAY=:0 && xconsole -daemon -file /var/log/internet.log
fi
# Проверяем соединение с Акнет
echo "Пингуем Aкнет"
PING=`ping -c 4 212.112.96.1`
ret=$?
if [ "$ret" -ne "1" ]; then
echo `date` ", Connection to Aknet normal!"
fi
if [ "$ret" -ne "0" ]; then
echo `date` ", Connection to Aknet down!" >> /var/log/internet.log
killall xconsole
export DISPLAY=:0 && xconsole -daemon -file /var/log/internet.log
fi
#и далее так же для всех местных проваков
done

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:33
Raven
Для FreeBSD (да и не только думаю для нее) подойдет такой скрипт

Код: Выделить всё

#!/usr/local/bin/bash

testip="Какой-нибудь IP, лучше DNS"

kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
    then
    echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
    sleep 60
    kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
        if [ $kol == 0 ]
            then
            echo "Выполнение моего скрипта. " | logger -t NOPING
            СЮДА НУЖНО ВПИСАТЬ НЕОБХОДИМЫЕ КОМАНДЫ
            exit 0
        fi
fi

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:33
Infernal Flame
вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:34
Raven
Infernal Flame писал(а):вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть
*LOL*
инету нету, а ему смс... Каким образом?

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:46
Raven
Можно замутить еще что-то такое, с автоматическим перезапуском ppp, но запись будет только в логи

Код: Выделить всё

#!/bin/sh

isi=`/sbin/ping -c 3 ip-адрес | grep "64 bytes" | wc -l`
if !(test $isi -gt "0")
then
echo Нет инета `date` >> /var/log/inet.log
/usr/bin/killall ppp
sleep 5 
/usr/sbin/ppp -ddial inet
fi
done

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 10:46
Infernal Flame
Raven
на втором канале :)

Re: Скрипт проверяющий наличие соединение с Интернет

Добавлено: 31 мар 2010, 11:18
Raven
Скрипт, запускается в кронтабе каждые 10 минут. В текстовый файл кладется статистика времени отсутствия Интернета:

Код: Выделить всё

#! /bin/sh
ping="/sbin/ping"
# часы
date_time="`date +%H:%M:%S`"
# дата
date="`date +%d-%m-%Y`"
# часы минуты
date_hour="`date +%H`"
date_minute="`date +%M`"

# Пингуемые хосты
ISP="xxx.xxx.xxx.xxx"

# Создание файлов если их нет
if [ ! -f hour.txt ]; then
echo "$date_hour" > hour.txt
echo "$date_minute" > minute.txt
echo "" > interval.txt
fi

# Пингуем провайдера
$ping -q -c 4 ${ISP} >/dev/null 2>&1

# если результат равен 0 (true)
if [ $? -eq 0 ]; then
    echo "Провайдер Lecos - $ISP доступен."
    exit 0;
else
        echo "Ошибка связи. Провайдер Lecos - $ISP не доступен"2>/dev/null 1>&2
        # Последнее время проверки
        old_hour="`cat hour.txt`"
        old_minute="`cat minute.txt`"

        # Текущая разница времени
        end_hour="`expr $date_hour - $old_hour`"
        end_minute="`expr $date_minute - $old_minute`"


        echo "-------------------------------
        Дата:  $date
        Время: $date_time
        Время отсутствия: ${old_hour}:${old_minute} - ${date_hour}:${date_minute}
        Всего $end_hour часов $end_minute минут.
        -------------------------------" >> interval.txt
            # Интервалы отсутствия времени
            interval="`cat interval.txt`"
            echo "$date_hour" > hour.txt
            echo "$date_minute" > minute.txt
            echo
            echo "Интервалы времени отсутствия Интернета:   "
            echo "$interval"
exit 1;

fi