Скрипт для перезапуска mdp5 через cron
Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- проходил мимо
Скрипт для перезапуска mdp5 через cron
Добрый день!
Последнее время пров часто обрывает соединение, проблемы с оборудованием видимо.
И mpd5 не всегда его восстанавливает, когда отключения слишком продолжительны, по этому сидя на работе частенько теряю домашний сервак.
Слышал что можно дергать кроном периодически скрипт, который пинговал бы какой-нибудь адрес во внешней сети и при отсутствии пинга, делал бы реконнект pptp, но к сожалению написать такой скрипт не знаю как. В сети пока тоже ничего похожего не нашел.
Может ли кто-нибудь показать пример такого скрипта или помочь его написать?
ос: freebsd 8.1
Заранее большое спасибо.
Последнее время пров часто обрывает соединение, проблемы с оборудованием видимо.
И mpd5 не всегда его восстанавливает, когда отключения слишком продолжительны, по этому сидя на работе частенько теряю домашний сервак.
Слышал что можно дергать кроном периодически скрипт, который пинговал бы какой-нибудь адрес во внешней сети и при отсутствии пинга, делал бы реконнект pptp, но к сожалению написать такой скрипт не знаю как. В сети пока тоже ничего похожего не нашел.
Может ли кто-нибудь показать пример такого скрипта или помочь его написать?
ос: freebsd 8.1
Заранее большое спасибо.
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт для перезапуска mdp5 через cron
Попробуй добавить в конфиг клиента
Код: Выделить всё
set link max-redial 0
set link keep-alive 20 75
-
- проходил мимо
Re: Скрипт для перезапуска mdp5 через cron
такие строчки с такими же значениями в конфиге mpd есть, он делает несклько десятков попыток, и бывает отрабатывает нормально, а бывает что переподключения не происходит, по этому и понадобился скриптик
- skeletor
- майор
- Сообщения: 2548
- Зарегистрирован: 2007-11-16 18:22:04
Re: Скрипт для перезапуска mdp5 через cron
Ну тогда приводи весь конфиг. У меня нормально переподключается.
-
- проходил мимо
Re: Скрипт для перезапуска mdp5 через cron
startup:
default:
load pptp_client
pptp_client:
create bundle static B1
set iface enable tcpmssfix
set iface up-script /usr/local/etc/mpd5/mpd_up.sh
set iface route default
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pptp
set link action bundle B1
set bundle no noretry
set auth authname xxxxxxx
set auth password xxxxxx
# set link disable magicnum
set link disable check-magic
# set link disable multilink
set link max-redial 0
set link mtu 1400
set link keep-alive 20 75
set pptp peer vpn0.giga.su
set pptp disable windowing
open
default:
load pptp_client
pptp_client:
create bundle static B1
set iface enable tcpmssfix
set iface up-script /usr/local/etc/mpd5/mpd_up.sh
set iface route default
set ipcp ranges 0.0.0.0/0 0.0.0.0/0
create link static L1 pptp
set link action bundle B1
set bundle no noretry
set auth authname xxxxxxx
set auth password xxxxxx
# set link disable magicnum
set link disable check-magic
# set link disable multilink
set link max-redial 0
set link mtu 1400
set link keep-alive 20 75
set pptp peer vpn0.giga.su
set pptp disable windowing
open
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: Скрипт для перезапуска mdp5 через cron
у меня тоже такое бывает, лечится ручным передергиванием mpd
виснет на
автоматизировать передергивание mpd можно так
виснет на
Код: Выделить всё
testbed# vidcontrol -P < /dev/ttyv1
[L1] LCP: Close event
[L1] LCP: state change Opened --> Closing
[L1] Link: Leave bundle "B1"
[B1] Bundle: Status update: up 0 links, total bandwidth 9600 bps
[B1] IPCP: Close event
[B1] IPCP: state change Stopped --> Closed
[B1] IPCP: Down event
[B1] IPCP: state change Closed --> Initial
[L1] LCP: SendTerminateReq #4
[L1] LCP: LayerDown
[L1] LCP: rec'd Terminate Ack #4 (Closing)
[L1] LCP: state change Closing --> Closed
[L1] LCP: LayerFinish
[L1] PPTP call terminated
[L1] Link: DOWN event
[L1] LCP: Down event
[L1] LCP: state change Closed --> Initial
caught fatal signal term
[B1] IFACE: Close event
[B1] IPCP: Close event
[B1] Bundle: Shutdown
[L1] Link: Shutdown
process 1716 terminated
You have new mail.
testbed#
Код: Выделить всё
testbed# crontab -l
#minute hour mday month wday command
#
*/10 * * * * /sbin/ping -c 4 ya.ru || /usr/local/etc/rc.d/mpd5 restart 2>&1 >> /dev/null
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
-
- проходил мимо
Re: Скрипт для перезапуска mdp5 через cron
to FreeBSP
в вашем примере если соединение присутствует, cron все равно будет сессию передергивать раз в 10 мин,
или это будет происходить только при отсутствии пинга?
в вашем примере если соединение присутствует, cron все равно будет сессию передергивать раз в 10 мин,
или это будет происходить только при отсутствии пинга?
- FreeBSP
- майор
- Сообщения: 2020
- Зарегистрирован: 2009-05-24 20:20:19
- Откуда: Москва
Re: Скрипт для перезапуска mdp5 через cron
раз в 10 минут он пингует яндекс и если пинг закончил работу со статусом отличным от нуля тогда рестартует mpd
man ping
man ping
Код: Выделить всё
EXIT STATUS
The ping utility exits with one of the following values:
0 At least one response was heard from the specified host.
2 The transmission was successful but no responses were received.
any other value
An error occurred. These values are defined in <sysexits.h>.
Человек начинает получать первые наслаждения от знакомства с unix системами. Ему нужно помочь - дальше он сможет получать наслаждение самостоятельно ©
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
Ламер — не желающий самостоятельно разбираться. Не путать с новичком: ламер опасен и знает это!
-
- проходил мимо
Re: Скрипт для перезапуска mdp5 через cron
Большое спасибо за совет!
Буду пробовать.
Буду пробовать.
-
- проходил мимо
- Сообщения: 4
- Зарегистрирован: 2014-02-05 13:49:14
Re: Скрипт для перезапуска mdp5 через cron
Каким образом добавить логирование сего действия? Или как это всё вынести в sh скрипт
-
- проходил мимо
Re: Скрипт для перезапуска mdp5 через cron
Примерно для таких нужд навелосипедил:
Код: Выделить всё
[Charlz_Klug@Meleena]~>$ cat /usr/local/etc/pinger/pinger.pl
#!/usr/bin/perl
package Pinger;
use warnings;
use strict;
use Net::Ping;
use Readonly;
Readonly my $SECONDS_IN_MINUTE => 60;
Readonly my $MINUTES_IN_HOUR => 60;
Readonly my $SITE_TIMEOUT_IN_SECONDS => 10;
Readonly my $START_HOUR => 7;
Readonly my $START_MINUTE => 35;
Readonly my $END_HOUR => 24;
Readonly my $END_MINUTE => 0;
our $VERSION = 0.1;
sub convert_time_to_seconds {
my($hour, $minute, $seconds) = @_;
return ($hour * $MINUTES_IN_HOUR * $SECONDS_IN_MINUTE) + ($minute * $SECONDS_IN_MINUTE) + $seconds;
}
sub p_worktime_seconds {
my ($start_time_in_seconds, $end_time_in_seconds) = @_;
my ($current_second, $current_minute, $current_hour) = (localtime)[0,1,2];
my $current_time_in_seconds = convert_time_to_seconds($current_hour, $current_minute, $current_second);
if ($current_time_in_seconds >= $start_time_in_seconds && $current_time_in_seconds <= $end_time_in_seconds) {
return 1;
}
else {
return 0;
}
}
sub ping_host {
my($host_name, $timeout) = @_;
my $return_value = 0;
my $p = Net::Ping->new('icmp');
if ($p->ping($host_name, $timeout)) {
$return_value = 1};
$p->close();
return $return_value;
}
sub ping_mail_ru {
return ping_host('mail.ru', $SITE_TIMEOUT_IN_SECONDS);
}
sub ping_facebook_com {
return ping_host('facebook.com', $SITE_TIMEOUT_IN_SECONDS);}
sub ping_google_com {
return ping_host('google.com', $SITE_TIMEOUT_IN_SECONDS);
}
sub ping_youtube_com {
return ping_host('youtube.com', $SITE_TIMEOUT_IN_SECONDS);
}
sub ping_yahoo_com {
return ping_host('yahoo.com', $SITE_TIMEOUT_IN_SECONDS);
}
sub message_to_log {
system '/bin/echo \"`date`: ppp restarted.\" >> /var/log/pinger.log';
return 1;
}
sub restart_ppp {
if (p_worktime_seconds((convert_time_to_seconds($START_HOUR, $START_MINUTE, 0)), (convert_time_to_seconds($END_HOUR, $END_MINUTE, 0)))){
system '/usr/local/etc/PppAccountSwitch/ppptouzbhim.sh';}
else {
system '/usr/local/etc/PppAccountSwitch/ppptoametovii-dsl.sh';}
return 1;
}
sub check_connect_to_internet {
if (!(ping_mail_ru || ping_facebook_com || ping_google_com || ping_youtube_com || ping_yahoo_com)) {
restart_ppp();
message_to_log();
}
return 1;
}
check_connect_to_internet();
1;
#if (ping_host("wikipedia.ru", 60)) {
# print "Ya.ru is alive!\n";}
#else {
#print "Site is down!\n";}
#if (worktime(0, 0, 0, 24, 0, 0)) {
#print "Worktime!\n";}
#print convert_time_to_seconds(1, 02, 02);
[Charlz_Klug@Meleena]~>$