URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 92470
[ Назад ]

Исходное сообщение
"Помогите написать скрипт! "

Отправлено Free_Man , 19-Окт-11 22:48 
Нужен скрипт проверки ping шлюза провайдера.
Если ping нет то  /usr/local/etc/rc.d/mpd4 restart

Нашел 2 скрипта. Но не работают.

#!/bin/sh
# ping хоста
png=`ping -c 1 -i 1 PING_HOST | grep % | awk '{ print $7 };'`

case $png
    in
        100%)
        /usr/local/etc/rc.d/mpd4 restart
        fi
    break
    ;;
esac


#!/bin/bash
ping -n -q -c 1 -t 1 8.8.8.8   >  /dev/null 2>&1
if [ $? -eq 0 ] ; then
exit
else
reboot
fi


Содержание

Сообщения в этом обсуждении
"Помогите написать скрипт! "
Отправлено BillyBoy , 20-Окт-11 02:23 
#!/bin/bash
ping -n -q -c 1 -t 1 8.8.8.8  || reboot



"Помогите написать скрипт! "
Отправлено ACCA , 20-Окт-11 09:17 
Он не написал, что не работает. Возможно, что ping намертво застревает скажем, в send, из-за какого-то глюка железа.

А может быть у него ping не установлен или он пытается reboot сделать юзером.

Подожди, пока он вышлет той травы, которую курил, когда спрашивал. Мы её покурим и ответим...


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 10:22 
Спасибо за ответы! Суть такова. PPPoE поднял через mpd4. Тунель подвисает и каждый раз нужно перегружать mpd4 вручную либо глюки с adsl модемот то и его и сервак. Поэтому хотел запихнуть скрипт в crontab чтоб он проверял наличие интернета и перегружал mpd4.
Пока в данный момент поместил в crontab :
@hourly   root    /etc/netstart && /usr/local/etc/rc.d/mpd4 restart
В начале каждого часа рестарт netsart и mpd4 . Помогает :)))
Нашел еще: в crontab внести надо:
*/10     *       *       *       *       /sbin/ping -c 4 ya.ru || /usr/local/etc/rc.d/mpd4 restart 2>&1 >> /dev/null
Вот сегодня попробую.

По поводу скрипта подскажите а то ниразу не делал. Создаю файл script - содержимое:
#!/bin/bash
ping -n -q -c 1 -t 1 8.8.8.8 || reboot

И прописывай в crontab 00 20 * * * /home/script
И как принудительно егозапустить??? :)


"Помогите написать скрипт! "
Отправлено ACCA , 20-Окт-11 11:05 
> глюки с adsl модемот то и его и сервак.

Pard my French, but йоп твайу мать. Подожди, пока пройдут глюки и попробуй выражаться более определённо по поводу модемота.


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 11:08 
Если перегрузить модем то тунель заного не поднимаеться даже ручным способом - приходиться сервер перегружать.

"Помогите написать скрипт! "
Отправлено ACCA , 20-Окт-11 11:09 
> Если перегрузить модем то тунель заного не поднимаеться даже ручным способом -
> приходиться сервер перегружать.

Хорошо. Что получается, если в момент зависа канала выполнить


ping -n -q -c 1 -t 1 8.8.8.8 || echo reboot


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 11:14 
>> Если перегрузить модем то тунель заного не поднимаеться даже ручным способом -
>> приходиться сервер перегружать.
> Хорошо. Что получается, если в момент зависа канала выполнить
>
 
> ping -n -q -c 1 -t 1 8.8.8.8 || echo reboot
>

Пока не знаю сегодня попробую!


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 18:20 
unix# ping -n -q -c 1 -t 1 77.51.199.250 || echo reboot
PING 77.51.199.250 (77.51.199.250): 56 data bytes

--- 77.51.199.250 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
reboot

Взял Ip не рабочий....Сервак не перегружаеться

>> Если перегрузить модем то тунель заного не поднимаеться даже ручным способом -
>> приходиться сервер перегружать.
> Хорошо. Что получается, если в момент зависа канала выполнить
>

 
> ping -n -q -c 1 -t 1 8.8.8.8 || echo reboot
>

"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 19:29 
>[оверквотинг удален]
> --- 77.51.199.250 ping statistics ---
> 1 packets transmitted, 0 packets received, 100.0% packet loss
> reboot
> Взял Ip не рабочий....Сервак не перегружаеться
>>> Если перегрузить модем то тунель заного не поднимаеться даже ручным способом -
>>> приходиться сервер перегружать.
>> Хорошо. Что получается, если в момент зависа канала выполнить
>>
 
>> ping -n -q -c 1 -t 1 8.8.8.8 || echo reboot
>>

Э-э-э..! Аллё, гараж!
Это как так "Сервак не перегружаеться" ??
Типа тонкий аглицкий юмор, да ?
Он же тебе английскими буквами по русски написал: "reboot"
Ты эхо-то убери и протести еще раз.
ping -q -c 1 -t 1 8.8.8.8 || reboot


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 19:31 
>[оверквотинг удален]
>>> Хорошо. Что получается, если в момент зависа канала выполнить
>>>
 
>>> ping -n -q -c 1 -t 1 8.8.8.8 || echo reboot
>>>

> Э-э-э..! Аллё, гараж!
> Это как так "Сервак не перегружаеться" ??
> Типа тонкий аглицкий юмор, да ?
> Он же тебе английскими буквами по русски написал: "reboot"
> Ты эхо-то убери и протести еще раз.
> ping -n -q -c 1 -t 1 8.8.8.8 || reboot

тебе скрин прислать:)))) пише reboot и не reboot :))) Сервер не перегружаеться ping как шел так и идет от сервака (из дома пробывал:) )



"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 19:34 
>[оверквотинг удален]
>>>>

>> Э-э-э..! Аллё, гараж!
>> Это как так "Сервак не перегружаеться" ??
>> Типа тонкий аглицкий юмор, да ?
>> Он же тебе английскими буквами по русски написал: "reboot"
>> Ты эхо-то убери и протести еще раз.
>> ping -n -q -c 1 -t 1 8.8.8.8 || reboot
> тебе скрин прислать:)))) пише reboot и не reboot :))) Сервер не перегружаеться
> ping как шел так и идет от сервака (из дома пробывал:)
> )

Че-та седня хрень какая-то..
Че пингаешь-то? Сервак гугля? Левый IP пни для пробы...


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 19:36 
Взял левый ip для пробы (дохлый конечно:)))  )


>[оверквотинг удален]
>>> Это как так "Сервак не перегружаеться" ??
>>> Типа тонкий аглицкий юмор, да ?
>>> Он же тебе английскими буквами по русски написал: "reboot"
>>> Ты эхо-то убери и протести еще раз.
>>> ping -n -q -c 1 -t 1 8.8.8.8 || reboot
>> тебе скрин прислать:)))) пише reboot и не reboot :))) Сервер не перегружаеться
>> ping как шел так и идет от сервака (из дома пробывал:)
>> )
> Че-та седня хрень какая-то..
> Че пингаешь-то? Сервак гугля? Левый IP пни для пробы...


"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 19:39 
>[оверквотинг удален]
>>>> Это как так "Сервак не перегружаеться" ??
>>>> Типа тонкий аглицкий юмор, да ?
>>>> Он же тебе английскими буквами по русски написал: "reboot"
>>>> Ты эхо-то убери и протести еще раз.
>>>> ping -n -q -c 1 -t 1 8.8.8.8 || reboot
>>> тебе скрин прислать:)))) пише reboot и не reboot :))) Сервер не перегружаеться
>>> ping как шел так и идет от сервака (из дома пробывал:)
>>> )
>> Че-та седня хрень какая-то..
>> Че пингаешь-то? Сервак гугля? Левый IP пни для пробы...

Хы.. ))
четыре однерки??
ифконфиг выводит? у мну да!
ping -q -c 1 1.1.1.1 || ifconfig


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 19:54 
Я ж написал что пингую:)))
unix# ping -n -q -c 1 -t 1 77.51.199.250 || echo reboot
77.51.199.250 .....



"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 19:58 
> Я ж написал что пингую:)))
> unix# ping -n -q -c 1 -t 1 77.51.199.250 || echo reboot
> 77.51.199.250 .....

Ты че в натуре стебаешься??
Тебе ж говорят ЭХО УБЕРИ!

Короче, для тех кто на бронепоезде:
Было ping -n -q -c 1 -t 1 77.51.199.250 || echo reboot
А надо ping -n -q -c 1 -t 1 77.51.199.250 || reboot


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 20:05 
Урааа перегрузился :))) Я не прикалываюсь пиво пЪю :) не заметил . Подскажи как правельно в cron добавить эту строчку????
И еще было б неплохо скрипт написать типа
проверить 8.8.8.8 если пинга нет то restart mpd4 - пробуем заного - если нет то рестарт сетевой карты (бывает что зависает тоже но не факт) если нет пинга то теперь уже и reboot :)))) попробую начирикать если не так поправь пож!!! И спасибо за помощь!!!!!

> А надо ping -n -q -c 1 -t 1 77.51.199.250 || reboot

"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 20:16 
> Урааа перегрузился :))) Я не прикалываюсь пиво пЪю :) не заметил .
> Подскажи как правельно в cron добавить эту строчку????

*/5     *       *       *       *       root    /sbin/ping -q -c 1 -t 1 8.8.8.8 || /sbin/reboot

Эта строка будет проверять каждые 5 минут паблик днс гугля и если он в дауне, то ребут твоего сервака )))


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 20:22 
*/5     *       *       *       *       root    /sbin/ping -q -c 1 -t 1 8.8.8.8 || /usr/local/etc/rc.d/mpd4 restart

для начало мне надо перегрузить mpd4 .... Так подойдет??? Михалыч спасибо:))) Вот скрипт который я пока не знаю он был бы идеален --проверка dns гугла - если нет то перезагрузка mpd4 -- если нет то уже перезагрузка сервака:)))


Супер!!! :))) Работает mpd4 restart !!!! убил mpd4 и скрипт сработал!!!!


"Помогите написать скрипт! "
Отправлено михалыч , 20-Окт-11 21:23 
> скрипт который я пока не знаю он был бы идеален --проверка
> dns гугла - если нет то перезагрузка mpd4 -- если нет
> то уже перезагрузка сервака:)))

Да.. давненько не брал я в руки шашек.. гы-ы-ы-ы!
Ох и намучу сейчас что-то страшное!


#!/bin/sh

# СКРИПТ ПРОВЕРКИ РАБОТЫ И АКТИВНОСТИ ИНТЕРНЕТ СОЕДИНЕНИЯ

# ОПРЕДЕЛЯЕМ ПЕРЕМЕННЫЕ, ПУТИ ДО ЛОГ-ФАЙЛОВ И ИСПОЛНЯЕМЫХ СКРИПТОВ

# ПУТЬ ДО ЛОГ-ФАЙЛА
LOG="/var/log/check_inet.log"

# ОПРЕДЕЛЯЕМ СЕРВЕР ДЛЯ ПРОВЕРКИ ДОСТУПНОСТИ ИНТЕРНЕТА
SERVER="8.8.8.8"

# ОПРЕДЕЛЯЕМ ПУТЬ ДО ИСПОЛНЯЕМОГО ФАЙЛА ПРОГРАММЫ PING
PING="/sbin/ping"

# ОПРЕДЕЛЯЕМ ПУТЬ ДО ИСПОЛНЯЕМОГО ФАЙЛА ПРОГРАММЫ REBOOT
REBOOT="/sbin/reboot"

# ОПРЕДЕЛЯЕМ ПУТЬ ДО СКРИПТА РЕСТАРТА MPD
MPD_RESTART="/usr/local/etc/rc.d/mpd4"


# ОПИСЫВАЕМ ФУНКЦИИ

# РЕСТАРТ MPD
mpd_restart() {
if [ -x ${MPD_RESTART} ]; then
        echo "$(date +%d-%m-%y\ %H:%M:%S) РЕСТАРТ MPD НАЧАТ" >> ${LOG}
else
        echo "$(date +%d-%m-%y\ %H:%M:%S) ОШИБКА! СКРИПТ РЕСТАРТА MPD НЕ НАЙДЕН! --> ВЫХОД" >> ${LOG}
        exit 2
fi

${MPD_RESTART} restart >/dev/null 2>/dev/null

        echo "$(date +%d-%m-%y\ %H:%M:%S) РЕСТАРТ MPD УСПЕШНО ОКОНЧЕН" >> ${LOG}
        restart

return 0
}


# ПРОВЕРКА СЕРВЕРА НА ДОСТУПНОСТЬ ЧЕРЕЗ PING
ping_server() {
${PING} -q -c1 -t1 -s0 ${SERVER} >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
        echo "$(date +%d-%m-%y\ %H:%M:%S) ТЕСТ PING ${SERVER} УСПЕШНО ВЫПОЛНЕН!" >> ${LOG}
        exit 0
else
        echo "$(date +%d-%m-%y\ %H:%M:%S) ОШИБКА! ТЕСТ PING ${SERVER} НЕУДАЧНО! --> РЕСТАРТ MPD" >> ${LOG}
        mpd_restart
fi

return 0
}


# ПРОВЕРКА ИНТЕРНЕТА ПОСЛЕ РЕСТАРТА MPD
restart() {
${PING} -q -c1 -t1 -s0 ${SERVER} >/dev/null 2>/dev/null
if [ $? -eq 0 ]; then
        echo "$(date +%d-%m-%y\ %H:%M:%S) ТЕСТ PING ${SERVER} ПОСЛЕ РЕСТАРТА MPD УСПЕШНО ВЫПОЛНЕН!" >> ${LOG}
        exit 0
else
        echo "$(date +%d-%m-%y\ %H:%M:%S) КРИТИЧЕСКАЯ ОШИБКА!! ДВА ТЕСТА НЕУДАЧНО!! --> REBOOT НАШЕГО СЕРВЕРА" >> ${LOG}
        ${REBOOT}
fi

return 0
}


# СТАРТ - ОБЩЕЕ НАЧАЛО РАБОТЫ СКРИПТА
echo "=============================================================" >> ${LOG}
echo "$(date +%d-%m-%y\ %H:%M:%S) СТАРТ ПРОВЕРКИ ДОСТУПНОСТИ ИНТЕРНЕТА" >> ${LOG}
ping_server

exit 0


Кидаем скрипт куда-нибудь. Обзываем его, ну скажем, check_inet.sh
Делаем его исполняемым и вызываем по крону как нам надо, хоть каждые 5 минут.
В кроне пути указываем полные.

"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 21:26 
Спасибо ! буду на трезвую голову разбираться:))))


"Помогите написать скрипт! "
Отправлено ACCA , 20-Окт-11 11:22 
> то и его и сервак. Поэтому хотел запихнуть скрипт в crontab
> чтоб он проверял наличие интернета и перегружал mpd4.

Я бы ещё попробовал перегрузить и Ethernet через


rmmod xxx
modprobe xxx

где XXX - модуль Ethernet карты. Не он ли глючит?

Если глючит железо то да, reboot решает.


"Помогите написать скрипт! "
Отправлено Free_Man , 20-Окт-11 11:26 
Хочу еще так попробывать
ifconfig dc0 down && ifconfig dc0 up && /usr/local/etc/rc.d/mpd4 restart
перегрузить сетевуху сначало...