bash, perl, python и прочие интерпретируемые скрипты
Модератор: Gen1us2k
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 31 мар 2010, 10:27
Немного копипаста, чуть-чуть работы мозгами, немного помощи зала и родилось это:
Скрипт пингует 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
Последний раз редактировалось
Raven 31 мар 2010, 13:28, всего редактировалось 1 раз.
Я не злопамятный, я просто часто ковыряю логи
Raven
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 31 мар 2010, 10:33
Для 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
Последний раз редактировалось
Raven 31 мар 2010, 10:33, всего редактировалось 1 раз.
Я не злопамятный, я просто часто ковыряю логи
Raven
-
Infernal Flame
- Злой Модер
- Сообщения: 1796
- Зарегистрирован: 03 мар 2010, 11:25
- ОС: Centos 7
-
Контактная информация:
Сообщение
Infernal Flame » 31 мар 2010, 10:33
вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть
Work: Centos 7 х 'all Servers'
Infernal Flame
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 31 мар 2010, 10:34
Infernal Flame писал(а):вахвахвах! карашо!
теперь еще надо придумать что-нить чтобы СМС на мобло приходило, так ваще будет круть
инету нету, а ему смс... Каким образом?
Я не злопамятный, я просто часто ковыряю логи
Raven
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 31 мар 2010, 10:46
Можно замутить еще что-то такое, с автоматическим перезапуском 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
Последний раз редактировалось
Raven 31 мар 2010, 10:48, всего редактировалось 2 раза.
Я не злопамятный, я просто часто ковыряю логи
Raven
-
Infernal Flame
- Злой Модер
- Сообщения: 1796
- Зарегистрирован: 03 мар 2010, 11:25
- ОС: Centos 7
-
Контактная информация:
Сообщение
Infernal Flame » 31 мар 2010, 10:46
Raven
на втором канале
Work: Centos 7 х 'all Servers'
Infernal Flame
-
Raven
- Бородатый сис
- Сообщения: 2800
- Зарегистрирован: 03 мар 2010, 15:12
- ОС: RHEL 8
- Откуда: Из серверной
Сообщение
Raven » 31 мар 2010, 11:18
Скрипт, запускается в кронтабе каждые 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
Я не злопамятный, я просто часто ковыряю логи
Raven