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 dudeML
> 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: