Страница 1 из 1
Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-21 9:51:09
IbbiSuen
Здравствуйте! Раз в сутки обрывается соединение РРРоЕ. Нашел в инете скрипт на Perl:
#!/usr/bin/perl
use Net::Ping;
$yandex="ya.ru";
sub ping_server
{
$host_alive=1;
$ping=Net::Ping->new('icmp');
if( $ping->ping($_[0]) ) { $host_alive=1;}
else {$host_alive=0;}
return $host_alive;
}
if(!ping_server($yandex))
{
# Kill ppp
system("killall ppp")
system("sleep 10");
# Start PPPoE ADSL connection
system("ppp -nat dedicated ukrtelecom");
# Log messages
system("echo `date` PPP restarted by timeout... >> /var/log/ppp.log");
}
else {
# Log messages
system("echo `date` PPP works ok! >> /var/log/ppp.log");
}
exit;
Прописал его в cron.
Скрипт пингует Яндекс и если пинг не проходит, перезапускает соединение. События логирует в /var/log/ppp.log для анализа.
Но что-то не работает. Соединение он разрывает (killall ppp), а вот поднять не может. После разрыва пробую вручную запустить РРРоЕ, пишет # Dedicated: Configuration label not found. Где ошыбка???
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-22 7:02:49
vadim64
отмодерите
ЭТО плиз
и дайте
или где там он
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-22 9:18:52
IbbiSuen
Сорри, отмодерил. Еще раз:
Код: Выделить всё
#!/usr/bin/perl
use Net::Ping;
$yandex="ya.ru";
sub ping_server
{
$host_alive=1;
$ping=Net::Ping->new('icmp');
if( $ping->ping($_[0]) ) { $host_alive=1;}
else {$host_alive=0;}
return $host_alive;
}
if(!ping_server($yandex))
{
# Kill ppp
system("killall ppp")
system("sleep 10");
# Start PPPoE ADSL connection
system("ppp -nat dedicated ukrtelecom");
# Log messages
system("echo `date` PPP restarted by timeout... >> /var/log/ppp.log");
}
else {
# Log messages
system("echo `date` PPP works ok! >> /var/log/ppp.log");
}
exit;
Вот еще
ppp.conf:
Код: Выделить всё
default:
set log Chat Phase LCP IPCP CCP tun command
Disable ipv6cp
ukrtelecom:
set device PPPoE:em1
set mtu max 1492
set mru max 1492
set speed sync
disable acfcomp protocomp
deny acfcomp
enable dns
enable lqr
set dial
set login
set authname ******
set authkey ******
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255
add default HISADDR
set redial 0 0
set reconnect 1 0
#NAT
nat enable yes
nat log yes
nat same_ports yes
nat unregistered_only yes
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-25 11:18:08
skeletor
А что мешает запускать нормально, как сервис:
?
Исправьте строку system("ppp -nat dedicated ukrtelecom")
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-26 9:57:44
IbbiSuen
Вообще у меня такая проблема: раз в сутки (ночью) соединение разрывается. Надо его поднять автоматически. Я подумал, может это связано с тем, что трафик нулевой и оно разрывается. Если прописать в ррр.conf - set timeout 0 это может это помочь?
И подскажите пожалуйста еще один момент. Пример, ррр в rc.conf:
Код: Выделить всё
ppp_enable="YES"
ppp_mode="dedicated"
ppp_profile="ukrtelecom"
ppp_nat="YES"
После того как загрузилась ОС, хочу рестарнуть ррр.
#killall ppp.
# ppp -nat dedicated ukrtelecom: Configuration label not found
Или,
#/etc/rc.d/ppp stop: Configuration label not found
#/etc/rc.d/ppp start: Configuration label not found
Что за ошибка???
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-26 17:06:48
skeletor
Скорее всего слово ukrtelecom содержит либо русские символы, либо ещё что-то. Но ukrtelecom в /etc/rc.conf и ukrtelecom /etc/ppp/ppp.conf - разные. Поэтому и ругается.
Re: Скрипт на Perl при обрыве PPPoE.
Добавлено: 2013-02-27 9:41:06
IbbiSuen
skeletor писал(а):Скорее всего слово ukrtelecom содержит либо русские символы, либо ещё что-то. Но ukrtelecom в /etc/rc.conf и ukrtelecom /etc/ppp/ppp.conf - разные. Поэтому и ругается.
Точно). Ошибка в самом слове была. Поменял в скрипте на "/etc/rc.d/ppp start". Сегодня попробую. Большое спасибо.