Страница 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
отмодерите ЭТО плиз
и дайте

Код: Выделить всё

/etc/ppp.conf
или где там он

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
А что мешает запускать нормально, как сервис:

Код: Выделить всё

/etc/rc.d/ppp start
?
Исправьте строку 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". Сегодня попробую. Большое спасибо.