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

bash, perl, python и прочие интерпретируемые скрипты

Moderator: Gen1us2k

Post Reply
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 31 Mar 2010, 10:27

Немного копипаста, чуть-чуть работы мозгами, немного помощи зала и родилось это:

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

Code: Select all

#!/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
Возможна также такая редакция (вариант проверяющий сети местных проваков):

Code: Select all

#!/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
Last edited by Raven on 31 Mar 2010, 13:28, edited 1 time in total.
Я не злопамятный, я просто часто ковыряю логи
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 31 Mar 2010, 10:33

Для FreeBSD (да и не только думаю для нее) подойдет такой скрипт

Code: Select all

#!/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
Last edited by Raven on 31 Mar 2010, 10:33, edited 1 time in total.
Я не злопамятный, я просто часто ковыряю логи
User avatar
Infernal Flame
Злой Модер
Posts: 1796
Joined: 03 Mar 2010, 11:25
ОС: Centos 7
Contact:

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

Post by Infernal Flame » 31 Mar 2010, 10:33

вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть
Image
Image
Work: Centos 7 х 'all Servers'
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 31 Mar 2010, 10:34

Infernal Flame wrote:вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть
*LOL*
инету нету, а ему смс... Каким образом?
Я не злопамятный, я просто часто ковыряю логи
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 31 Mar 2010, 10:46

Можно замутить еще что-то такое, с автоматическим перезапуском ppp, но запись будет только в логи

Code: Select all

#!/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
Last edited by Raven on 31 Mar 2010, 10:48, edited 2 times in total.
Я не злопамятный, я просто часто ковыряю логи
User avatar
Infernal Flame
Злой Модер
Posts: 1796
Joined: 03 Mar 2010, 11:25
ОС: Centos 7
Contact:

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

Post by Infernal Flame » 31 Mar 2010, 10:46

Raven
на втором канале :)
Image
Image
Work: Centos 7 х 'all Servers'
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2791
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

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

Post by Raven » 31 Mar 2010, 11:18

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

Code: Select all

#! /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

 
Я не злопамятный, я просто часто ковыряю логи
Post Reply