[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: autom. Wiedereinwahl mit pppd/pppoe



Hi!

>
> Vielleicht habe ich nicht intensiv genug auf der Homepage von
> www.roaringpenguin.org gesucht, da ich dort nichts derartiges
> gefunden habe, aber andererseits wäre so ein Skript ja u.U.
> von allgemeinem Interesse. Ähnliche Skripts sind ja auch von
> Andreas Behnert (abehn@gmx.net) Ende November hier in die dude­ML
> gepostet worden. Wenn es nicht allzu groß ist, dann poste es doch
> auch in die Liste. Ich bin für solche Bereicherungen immer dankbar. :-)
>

ist zwar doch recht lang, aber wenn's euch interessiert:

--snip--
#!/bin/sh
# Generated automatically from adsl-connect.in by configure.
#***********************************************************************
#
# adsl-connect
#
# Shell script to connect to an ADSL provider using PPPoE
#
# Copyright (C) 2000 Roaring Penguin Software Inc.
#
# $Id: adsl-connect.in,v 1.8 2001/01/29 16:51:35 dfs Exp $
#
# This file may be distributed under the terms of the GNU General
# Public License.
#
# Usage: adsl-connect [config_file]
#        adsl-connect interface user [config_file]
# Second form overrides USER and ETH from config file.
# If config_file is omitted, defaults to /etc//ppp/pppoe.conf
#
#***********************************************************************

# From AUTOCONF
prefix=/usr
exec_prefix=${prefix}
localstatedir=/var

# Paths to programs
IFCONFIG=/sbin/ifconfig
PPPD=/usr/sbin/pppd
SETSID=/usr/bin/setsid
PPPOE=${exec_prefix}/sbin/pppoe
LOGGER="/usr/bin/logger -t `basename $0`"

# Must be root
if test "`/usr/bin/id -u`" != 0 ; then
    echo "$0: You must be root to run this script" >& 2
    exit 1
fi

if test "$SETSID" != "" -a ! -x "$SETSID"; then
    SETSID=""
fi

CONFIG=/etc//ppp/pppoe.conf
USER=""
ETH=""

# Sort out command-line arguments
case "$#" in
    1)
        CONFIG="$1"
        ;;
    3)
        CONFIG="$3"
        ;;
esac

if test ! -f "$CONFIG" -o ! -r "$CONFIG" ; then
    echo "$0: Cannot read configuration file '$CONFIG'" >& 2
    exit 1
fi

. $CONFIG

PPPOE_PIDFILE="$PIDFILE.pppoe"
PPPD_PIDFILE="$PIDFILE.pppd"

# Check for command-line overriding of ETH and USER
case "$#" in
    2|3)
        ETH="$1"
        USER="$2"
        ;;
esac

# Check that config file is sane
if test "$USER" = "" ; then
    echo "$0: Check '$CONFIG' -- no setting for USER" >& 2
    exit 1
fi
if test "$ETH" = "" ; then
    echo "$0: Check '$CONFIG' -- no setting for ETH" >& 2
    exit 1
fi

PPPD_PID=0

# Catch common error
if test "$DEBUG" = "1" ; then
    echo "*** If you want to use DEBUG, invoke adsl-start, not
adsl-connect."
    exit 1
fi

if test "$DEBUG" != "" ; then
    if test "$LINUX_PLUGIN" != "" ; then
        echo "Cannot use DEBUG mode and LINUX_PLUGIN at the same time."
        echo "Kernel-mode PPPoE is experimental and unsupported."
        exit 1
    fi
    echo "ETH=$ETH; USER=$USER" >> $DEBUG
    echo "---------------------------------------------" >> $DEBUG
fi

# MTU of Ethernet card attached to modem MUST be 1500.  This apparently
# fails on some *BSD's, so we'll only do it under Linux

if test `uname -s` = Linux ; then
    $IFCONFIG $ETH up mtu 1500
    # For 2.4 kernels.  Will fail on 2.2.x, but who cares?
    modprobe ppp_async > /dev/null 2>&1
    modprobe ppp_synctty > /dev/null 2>&1
fi

if test "$SYNCHRONOUS" = "yes" ; then
        PPPOE_SYNC=-s
        PPPD_SYNC=sync
        # Increase the chances of it working on Linux...
        if test `uname -s` = Linux ; then
            modprobe n_hdlc > /dev/null 2>&1
        fi
else
        PPPOE_SYNC=""
        PPPD_SYNC=""
fi

if test "$CLAMPMSS" = "no" ; then
        CLAMPMSS=""
else
        CLAMPMSS="-m $CLAMPMSS"
fi

if test "$USEPEERDNS" = "yes" ; then
        USEPEERDNS="usepeerdns"
else
        USEPEERDNS=""
fi

# Backward config file compatibility
if test "$DEMAND" = "" ; then
        DEMAND=no
fi

if test "$DEMAND" = "no" ; then
        DEMAND=""
else
        DEMAND="demand persist idle $DEMAND 10.112.112.112:10.112.112.113
ipcp-accept-remote ipcp-accept-local connect true noipdefault ktune"
fi

case "$FIREWALL" in
    STANDALONE)
        . /etc/ppp/firewall-standalone
        ;;
    MASQUERADE)
        . /etc/ppp/firewall-masq
        ;;
esac

# If we're using kernel-mode PPPoE on Linux...
if test "$LINUX_PLUGIN" != "" ; then
    PLUGIN_OPTS="plugin $LINUX_PLUGIN $ETH"
    modprobe pppoe > /dev/null 2>&1
fi

# Standard PPP options we always use
PPP_STD_OPTIONS="$PLUGIN_OPTS noipdefault noauth default-asyncmap
defaultroute hide-password nodetach $USEPEERDNS local mtu 1492 mru 1492
noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp user $USER
lcp-echo-interval $LCP_INTERVAL lcp-echo-failure $LCP_FAILURE $PPPD_EXTRA"

# PPPoE invocation
PPPOE_CMD="$PPPOE -p $PPPOE_PIDFILE -I $ETH -T $PPPOE_TIMEOUT -U
$PPPOE_SYNC $CLAMPMSS $PPPOE_EXTRA"
if test "$DEBUG" != "" ; then
    if test "$DEMAND" != "" ; then
        echo "(Turning off DEMAND for debugging purposes)"
        DEMAND=""
    fi
    echo "pppd invocation" >> $DEBUG
    echo "$SETSID $PPPD pty '$PPPOE_CMD' $PPP_STD_OPTIONS $PPPD_SYNC debug"
>> $DEBUG
    echo "---------------------------------------------" >> $DEBUG
    $SETSID $PPPD pty "$PPPOE_CMD -D $DEBUG-0" \
        $PPP_STD_OPTIONS \
        $PPPD_SYNC \
        debug >> $DEBUG 2>&1
    echo "---------------------------------------------" >> $DEBUG

    echo "Extract from /var/log/messages" >> $DEBUG
    grep 'ppp' /var/log/messages | tail -150 >> $DEBUG
    date >> $DEBUG
    echo "---------------------------------------------" >> $DEBUG
    echo "rp-pppoe debugging dump" >> $DEBUG
    cat $DEBUG-0 >> $DEBUG
    rm -f $DEBUG-0
    for i in 1 2 3 4 5 6 7 8 9 10 ; do
    echo ""
    echo ""
    echo ""
    done
    echo "*** Finished debugging run.  Please review the file"
    echo "*** '$DEBUG' and make sure it does not contain"
    echo "*** any sensitive information.  Once you are satisfied with it,"
    echo "*** e-mail it to 'pppoe@roaringpenguin.com' for diagnosis."
    echo ""
    echo "*** BUT BEFORE YOU DO THIS, make sure you have read the
HOW-TO-CONNECT"
    echo "*** file which came with the rp-pppoe package."
    exit 0
fi

echo $$ > $PIDFILE

while [ true ] ; do
    if test "$LINUX_PLUGIN" != "" ; then
        $SETSID $PPPD $PPP_STD_OPTIONS $DEMAND &
        echo "$!" > $PPPD_PIDFILE
    else
        $SETSID $PPPD pty "$PPPOE_CMD" \
            $PPP_STD_OPTIONS \
            $DEMAND \
            $PPPD_SYNC &
        echo "$!" > $PPPD_PIDFILE
    fi
    wait

    # Run /etc/ppp/adsl-lost if it exists
    test -x /etc/ppp/adsl-lost && /etc/ppp/adsl-lost

    # Re-establish the connection
    $LOGGER -p daemon.notice \
        "ADSL connection lost; attempting re-connection."

    # Wait a bit in case a problem causes tons of log messages :-)
    sleep 5
done


--snap---

Der interessante Teil ist die Schleife ganz am Schluss. Das Script war wie
gesagt in nem RPM von der rp-pppoe Homepage, ist allerdings schon so ein
Jahr alt. Damals waren noch mehrere andere Scripte (adsl-start, adsl-stop,
adsl-status und adsl-setup) dabei, die aber ihrerseits praktisch nur
Frontends zu obigem Script darstellen.
cu, Fabian


-- 
-----------------------------------------------------------
Um sich aus der Liste auszutragen schicken Sie bitte eine
E-Mail an debian-user-de-request@lehmanns.de die im Subject
"unsubscribe <deine_email_adresse>" enthaelt.
Bei Problemen bitte eine Mail an: Jan.Otto@Lehmanns.de
-----------------------------------------------------------

1083 eingetragene Mitglieder in dieser Liste.


Reply to: