скрипт для пинга (при отсутствии пинга=>разрыв соединения и переподключение)
Модератор: Bizdelnick
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
скрипт для пинга
если можно дайте пожалуйста такой скрипт,что бы при отсутствии пинга pppd отключался и подключался заново.этот life уже задолбал,пол часа инет работает,а потом стоит.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
while :; do ping -c 3 ya.ru &>/dev/null || <команда перезапуска pppd> ; sleep <желаемый интервал между проверками (сек.)>; done
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
а можно объяснить мне тупоголовому подробнее что куда писать?
как я понял нужно создать:
#!/bin/sh
while :;
do ping -c 3 ya.ru &>/dev/null || <команда перезапуска pppd> ;
sleep <желаемый интервал между проверками (сек.)>;
done
-----------------------------------------------
или это можно прописать в ip-up?
<команда перезапуска pppd> -если можно что за команда?
как я понял нужно создать:
#!/bin/sh
while :;
do ping -c 3 ya.ru &>/dev/null || <команда перезапуска pppd> ;
sleep <желаемый интервал между проверками (сек.)>;
done
-----------------------------------------------
или это можно прописать в ip-up?
<команда перезапуска pppd> -если можно что за команда?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
если соединение должно работать постоянно, можно так: http://linuxforum.ru/index.php?s=&show...st&p=239607
правда, встает справедливый вопрос - что, провайдерский сервер исправно отвечает на lcp-echo-запросы, но трафик не пускает?
или на запросы ответов нет, но параметры, передаваемые pppd у Вас это допускают?
правда, встает справедливый вопрос - что, провайдерский сервер исправно отвечает на lcp-echo-запросы, но трафик не пускает?
или на запросы ответов нет, но параметры, передаваемые pppd у Вас это допускают?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
после получаса соединения падает скорость почти до 0(входящий трафик вообще не идёт), те на запросы ответов нет
# /etc/ppp/peers/
debug
115200
crtscts
modem
lock
novj
persist
nodetach
noipdefault
usepeerdns
defaultroute
connect '/usr/sbin/chat -e -f /etc/ppp/chat/connect -v'
/dev/ttyACM0
mtu 1500
user life
nobsdcomp
nodeflate
# /etc/ppp/chat
'' AT
TIMEOUT 45
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT 'ERROR'
REPORT 'CONNECT'
REPORT 'NO CARRIER'
REPORT 'NO DIAL TONE'
REPORT 'NO ANSWER'
REPORT 'ERROR'
'' ATE0
SAY '.....соединение с GPRS.....'
'' 'AT+CGDCONT=1,"IP","internet"'
'' ATS0=0
'' AT+CGQREQ=1,1,1,1,5,18
'' AT+CGQMIN=1,1,1,1,5,18
'' AT+CGATT?
'' ATDT*99***1#
TIMEOUT 22
CONNECT ""
SAY ' соединение с GPRS установлено'
вот параметры, может еще что нибудь добавить?
# /etc/ppp/peers/
debug
115200
crtscts
modem
lock
novj
persist
nodetach
noipdefault
usepeerdns
defaultroute
connect '/usr/sbin/chat -e -f /etc/ppp/chat/connect -v'
/dev/ttyACM0
mtu 1500
user life
nobsdcomp
nodeflate
# /etc/ppp/chat
'' AT
TIMEOUT 45
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'NO DIAL TONE'
ABORT 'NO ANSWER'
ABORT 'ERROR'
REPORT 'CONNECT'
REPORT 'NO CARRIER'
REPORT 'NO DIAL TONE'
REPORT 'NO ANSWER'
REPORT 'ERROR'
'' ATE0
SAY '.....соединение с GPRS.....'
'' 'AT+CGDCONT=1,"IP","internet"'
'' ATS0=0
'' AT+CGQREQ=1,1,1,1,5,18
'' AT+CGQMIN=1,1,1,1,5,18
'' AT+CGATT?
'' ATDT*99***1#
TIMEOUT 22
CONNECT ""
SAY ' соединение с GPRS установлено'
вот параметры, может еще что нибудь добавить?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
прослушайте соединение через те самые полчаса, когда трафик уже перестает ходить.
и посмотрите, идет ли обмен lcp-запросами/ответами.
если идет нормально, для начала потрясите провайдера.
если вообще не идет, или запросы от Вас есть, а ответов нет (и соединение все-таки не разрывается), посмотрите man pppd на предмет опций, начинающихся на lcp. можно выставить интервал между запросами и количество неудачных запросов, после которых соединение будет разорвано.
и посмотрите, идет ли обмен lcp-запросами/ответами.
если идет нормально, для начала потрясите провайдера.
если вообще не идет, или запросы от Вас есть, а ответов нет (и соединение все-таки не разрывается), посмотрите man pppd на предмет опций, начинающихся на lcp. можно выставить интервал между запросами и количество неудачных запросов, после которых соединение будет разорвано.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
Poor Fred
- Сообщения: 1575
- Статус: Pygoscelis papua
- ОС: Gentoo Linux, FreeBSD
Re: скрипт для пинга
Я для себя написал такой скриптик:
Запускается каждый час. Это на Фре, соединение через РРРоЕ. Цикл вставлен потому, что иногда kill/killall не сразу убивает соединение. Сообщения присылаются на рутовскую почту.
Код: Выделить всё
if ping -c 3 www.ru | grep -e "bytes from" >/dev/null
then echo "Internet is up! Exiting..." > /dev/null
else
echo "Internet is down! Trying to get it working"
if [ -f /var/run/tun0.pid ]
then PID=`cat /var/run/tun0.pid`
fi
until [ ! -f /var/run/tun0.pid ]
do
echo "Killing process $PID"
kill $PID
sleep 30
done
/usr/sbin/ppp -ddial CityNet
sleep 5
ping -c 3 www.ru
fiЗапускается каждый час. Это на Фре, соединение через РРРоЕ. Цикл вставлен потому, что иногда kill/killall не сразу убивает соединение. Сообщения присылаются на рутовскую почту.
Убить всех человеков!
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
sash-kan писал(а): ↑13.04.2007 22:03прослушайте соединение через те самые полчаса, когда трафик уже перестает ходить.
и посмотрите, идет ли обмен lcp-запросами/ответами.
если идет нормально, для начала потрясите провайдера.
если вообще не идет, или запросы от Вас есть, а ответов нет (и соединение все-таки не разрывается), посмотрите man pppd на предмет опций, начинающихся на lcp. можно выставить интервал между запросами и количество неудачных запросов, после которых соединение будет разорвано.
а как посмотреть идет ли обмен lcp-запросами/ответами?
если я выхожу через pppd call life, то ?
Код: Выделить всё
if ping -c 3 www.ru | grep -e "bytes from" >/dev/null
then echo "Internet is up! Exiting..." > /dev/null
else
echo "Internet is down! Trying to get it working"
if [ -f /var/run/ppp0.pid ]
then PID=`cat /var/run/ppp0.pid`
fi
until [ ! -f /var/run/ppp0.pid ]
do
echo "Killing process $PID"
kill $PID
sleep 30
done
/usr/sbin/pppd call life
sleep 5
ping -c 3 www.ru
fiно тогда в /usr/sbin/pppd call life пишет что нет такой команды call
-
TWINc
- Сообщения: 179
- ОС: Arch Linux Current
Re: скрипт для пинга
Я для реконнекта написал вот такое чудо:
Код: Выделить всё
PROVIDER_NAME=corbina
RECONNECT_INTERVAL=1m
while true; do
pppd call $PROVIDER_NAME nodetach
killall pppd --wait
sleep $RECONNECT_INTERVAL
rm -rf /var/run/ppp*.pid
done
exit 0Registered Linux user number #434194
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
TWINc писал(а): ↑14.04.2007 10:27Я для реконнекта написал вот такое чудо:
Код: Выделить всё
PROVIDER_NAME=corbina RECONNECT_INTERVAL=1m while true; do pppd call $PROVIDER_NAME nodetach killall pppd --wait sleep $RECONNECT_INTERVAL rm -rf /var/run/ppp*.pid done exit 0
если можно подробнее...куда это писать и как запускать?
только что опять прошло пол часа,смотрел через ifconfig-на отправку идут пакеты, а на приём нет.также не пингуется
[root@localhost sbin]# ping ya.ru -r 3 -a
ping: unknown host ya.ru
т.е. проблема будет решена этим скриптом,только помогите его правильно записать куда надо
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
любым анализатором трафика. тем же tshark-ом.
по умолчанию lcp-перекличка должна происходить раз в 30 секунд. не заметить ее отсутствие/наличие сложно.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
ну а всё таки как написать и запускать этот скрипт?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
уважаемый foxIG, Вы, все-таки определиться с тем, _что_ Вам нужно.
вот список наводящих вопросов:
вопрос номер один: соединение должно быть постоянным (пока включен компьютер) или подниматься по требованию?
вопрос номер два: каким образом Вы поднимаете соединение?
вот список наводящих вопросов:
вопрос номер один: соединение должно быть постоянным (пока включен компьютер) или подниматься по требованию?
вопрос номер два: каким образом Вы поднимаете соединение?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
1.соединение должно восстанавливаться при отсутствии пинга, т.е. не всё время,а когда поднят интерфейс ppp0
2.соединение поднимаю командой pppd call life
2.соединение поднимаю командой pppd call life
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
ну тогда можно примерно так запускать, естественно, от root-а. для разрыва соединения сначала убить этот скрипт (pkill -f <название скрипта>), а затем уже pppd.
хотя. поймать сигнал TERM внутри скрипта и перед завершением скрипта убивать pppd труда не составляет. это как домашнее задание (:
p.s. надеюсь, что излишне подсказывать, что pppd этот скрипт после своего запуска стартанет сам?
Код: Выделить всё
#!/bin/bash
# демонизация скрипта с помощью перезапуска его копии
if [ "x$1" != "x--" ]; then $0 -- 1> /dev/null 2> /dev/null &; exit 0; fi
# основная часть
# sllep 10 - чтобы дать pppd время на остановку. надеюсь, 10 секунд хватит. если нет, можно увеличить.
while :; do ping -c 3 ya.ru &>/dev/null || (killall pppd; sleep 10; pppd updetach call life); sleep 30; doneхотя. поймать сигнал TERM внутри скрипта и перед завершением скрипта убивать pppd труда не составляет. это как домашнее задание (:
p.s. надеюсь, что излишне подсказывать, что pppd этот скрипт после своего запуска стартанет сам?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
sash-kan писал(а): ↑14.04.2007 14:07ну тогда можно примерно такзапускать, естественно, от root-а. для разрыва соединения сначала убить этот скрипт (pkill -f <название скрипта>), а затем уже pppd.Код: Выделить всё
#!/bin/bash # демонизация скрипта с помощью перезапуска его копии if [ "x$1" != "x--" ]; then $0 -- 1> /dev/null 2> /dev/null &; exit 0; fi # основная часть # sllep 10 - чтобы дать pppd время на остановку. надеюсь, 10 секунд хватит. если нет, можно увеличить. while :; do ping -c 3 ya.ru &>/dev/null || (killall pppd; sleep 10; pppd updetach call life); sleep 30; done
хотя. поймать сигнал TERM внутри скрипта и перед завершением скрипта убивать pppd труда не составляет. это как домашнее задание (:
p.s. надеюсь, что излишне подсказывать, что pppd этот скрипт после своего запуска стартанет сам?
тогда еще несколько вопросов
1этот скрипт кидать в любое место?
2как запускать?
если я правильно понял-запускаем этот скрипт и при отсутствии интерфейса ppp0 он поднимается, и продолжает работать пинг ya.ru?
при отсутствии пинга killall pppd.я правильно понял?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
да
# /путь/к/скрипту/название-скрипта
а если он будет в каком-либо из каталогов из $PATH, то просто
# название-скрипта
ping посылает 3 (на всякий случай) пакета и завершается. в зависимости от результата его работы либо выполняется часть в скобочках, либо нет. потом sleep 30 и повтор цикла.
p.s. man bash && man ping
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
а можно его сделать #!/bin/sh и запускать как sh <скрипт> ?
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
можно. а зачем?
можно. а зачем? обычно файлам со скриптами присвают флаг «исполняемый» (man chmod) и запускают их, указывая путь, или, если скрипт лежит в одном из каталогов, перечисленных в $PATH, просто по имени.
кстати, Вы так и не дали прямого ответа на прямой вопрос - «соединение должно быть постоянным (пока включен компьютер) или подниматься по требованию?»
исходя из этого:
я рискнул предположить, что «по требованию».
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
foxIG
- Сообщения: 261
- ОС: Mandriva 2010 PP
Re: скрипт для пинга
огромное спасибо за скрипт
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: скрипт для пинга
пожалуйста. доработаете, чтобы перехватывал SIGTERM и убивал перед выходом pppd - выкладывайте. кому-то, может быть, пригодится.
но я бы рекомендовал все-таки разобраться с lcp. тогда можно будет воспользоваться и persist и maxfail 0. а не городить огород со «скриптами»
но я бы рекомендовал все-таки разобраться с lcp. тогда можно будет воспользоваться и persist и maxfail 0. а не городить огород со «скриптами»
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог