The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Раздел полезных советов: Автоподъем pptp linux-клиента на Fedora Core Linux"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для сортировки сообщений в нити по дате нажмите "Сортировка по времени, UBB".
"Раздел полезных советов: Автоподъем pptp linux-клиента на Fedora Core Linux" +/
Сообщение от auto_tips (?), 05-Апр-05, 11:11 
После безуспешного шаманства вокруг pppd с использованием persist, holdof и maxfail
решил написать следующий скрипт. Запускается из rc.local

#!/usr/bin/perl
use strict;
use Net::Ping;
my $hping=Net::Ping->new("icmp");
my $s=0;
sub logger($) {
my @ldata=localtime;$ldata[5]+=1900;$ldata[4]+=1;
my $j = 0;
for ($j = 0;$j < 5; $j++) {
    if ($ldata[$j] <10) {
       $ldata[$j] = "0" . $ldata[$j];
    }
}
my $data1="$ldata[3]/$ldata[4]/$ldata[5] $ldata[2]:$ldata[1]:$ldata[0]";
open (MAN_LOG, ">>/var/log/ppp_watcher");
print MAN_LOG "pw: $data1\t$_[0]\n";
close(MAN_LOG)
}
logger("daemon started.");
`echo "kill -15 $$" > /root/ppp_watch.die`;
`chmod 0700 /root/ppp_watch.die`;
sub ppp_watch {
    my @presence=split(' ', `ifconfig | grep ppp0`);
    $presence[0].='';
    if ($presence[0] ne 'ppp0') {
    logger("trying to start daemon.");
    `route add -net <LOCAL NETWORK> netmask 255.255.255.0 gw <LOCAL GW> 2>/dev/null`;
    `sleep 2`;
    `pppd noauth nobsdcomp nodeflate name sspm pty "pptp <GW> --nolaunchpppd" 2>/dev/null`;
    `sleep 3`;
    `route add -net <IP> netmask 255.255.255.0 gw <GW> 2>/dev/null`;
    `sleep 2`;
    `route del -net 0.0.0.0 netmask 0.0.0.0 gw <LOCAL IP> 2>/dev/null`;
    `sleep 3`;
    `route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0`;
    $SIG{'ALRM'}='ppp_watch';
    logger("delaying for 20 sec...");
    alarm(20);
    } else {
    my @traff=split(' ', `pppstats | tail -1`);
    logger("watching, total traffic $traff[0]");
    $SIG{'ALRM'}='ppp_watch';
    alarm(5);
    }
}
ppp_watch;
sub ppp_die {
    $s=1;
}
$SIG{'TERM'}='ppp_die';
while ($s ne 1) {
}
logger("daemon stopped.");
exit 0;


Кроме всего прочего ведет лог состояния и трафика.


URL:
Обсуждается: http://www.opennet.dev/tips/info/824.shtml

Ответить | Правка | Cообщить модератору

Оглавление
Раздел полезных советов: Автоподъем pptp linux-клиента на Fedora Core Linux, auto_tips, 05-Апр-05, 11:11  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру