顯示文章

這裡允許您檢視這個會員的所有文章。請注意, 您只能看見您有權限閱讀的文章。


主題 - tigershen

頁: [1]
1
BSD 討論版 / 在FreeBSD上斷線自動重撥PPPoE??
« 於: 2004-10-02 23:31 »
我根據 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/pppoe.html
設定好了PPPoE

根據這個說明 http://www.freebsd.org/cgi/man.cgi?query=ppp&apropos=0&sektion=0&manpath=FreeBSD+4.10-stable&format=html
執行 ppp 加上 -ddial 會在斷線時自動重撥
根據我自己的經驗, 斷線有兩種方式.
一種是被server踢下線, 在這種情況下-ddial就會自動重新撥接.
但是還有另一種狀況就是實體線路斷線, 在這種情況下, -ddial並不會重新撥接.
為了解決這個問題,我找了很久都沒有資料可供參考
最後沒辦法只好寫了一個小script放到crontab裡面定期執行.
不知道有沒有人有更好的方法可以提供的
引用

#!/usr/bin/perl
$str = `/sbin/ifconfig tun0`;

if ($str =~ /-->\s(\d+\.\d+\.\d+\.\d+)\snetmask/){
        $dgw = $1;
}
if ($str =~ /Opened\sby\sPID\s(\d+)/){
        $pid = $1;
}

if ( !$pid ) {
        `/usr/sbin/ppp -ddial hinet`;
} else {
        use Net::Ping;
        $p = Net::Ping->new("icmp");
        if( !$p->ping($dgw)){
                `/bin/kill -9 $pid`;
                ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
                $mon+=1;
                open(LOG, '>> /etc/ppp/redial.log');
                print LOG "$mon-$mday=$hour:$min:$sec $dgw is dead\n";
                close(LOG);
                `/usr/sbin/ppp -ddial hinet`;
        }
}

頁: [1]