ADSL beim Booten automatisch starten - wieso geht's nicht?

Das Forum fĂĽr den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!
Forumsregeln
Das Forum fĂĽr den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!

ADSL beim Booten automatisch starten - wieso geht's nicht?

Beitragvon airflow » So 20 Jun, 2004 13:41

Schönen Abend!

OK, ich hab' jetzt ungefähr einen halben Tag mit dem Problem verschi**en, jetzt frag' ich mal hier um fachkundigen Rat:

Ich habe ein /etc/init.d/adsl.sh Startskript geschrieben, welches auf wunderbare Weise die ADSL PPP Verbindung aufbaut bzw. wieder abbaut. Funktioniert. Jetzt möchte ich, daß dieses Skript automatisch beim Hochfahren (also beim Betreten des Runlevels 2 zB) gestartet wird. OK, symbolischer Link ist gelegt, nur... In dieser Konstellation bleibt das Skript komischerweise (fast) immer hängen. Fast immer deswegen, weil es 1 oder 2 mal funktioniert hat. Die Fehlermeldung, die man in diesen Fällen im syslog vorfindet, lautet:

Jun 19 12:51:28 chello213047014143 pptp[380]: warn[open_inetsock:pptp_callmgr.c:310]: connect: Connection timed out
Jun 19 12:51:28 chello213047014143 pptp[380]: fatal[callmgr_main:pptp_callmgr.c:133]: Could not open control connection t
o 10.0.0.138
Jun 19 12:51:28 chello213047014143 pptp[379]: fatal[open_callmgr:pptp.c:283]: Call manager exited with error 256

Meine Recherchen im Internet ergaben, daß diese Fehlermeldung immer dann auftritt, wenn die Netzwerkkarte für die ppp verbindung (in meinem Fall eth2) nicht up ist. Das stimmt aber definitiv nicht. Ich habe versuchshalber den Aufruf schon sehr nach hinten verschoben, aber das funktioniert auch nicht wirklich. War aber fürs Debuggen fast schon notwendig, denn wenn sich der Computer aufhängt, bevor er ganz hochgefahren ist und auch noch nicht über ssh erreichbar ist, ist das reparieren ganz schön nervenraubend (not-boot-cd, mounten, etc's editiern, neu booten etc).

Mal abgesehen davon, ist es fĂĽr mich eh' keine Option, das ADSL-Startskript so weit hinten zu haben, weil diverse andere Skripts (Firewall, policy based routing) auf ein vorhandenes ppp0 angewiesen sind und ansonsten Fehlermeldungen produzieren.

Irgendjemand eine Idee?
Thx in advance,
airflow
airflow
Neu im Board
Neu im Board
 
Beiträge: 6
Registriert: Fr 18 Jun, 2004 12:35

Beitragvon lordpeng » So 20 Jun, 2004 13:52

funktionierts denn wenn du das script händisch aufrufst nachdem der rechner mit dem boot fertig ist?

ich hab da so eine vermutung, mach mal ls /etc/rc2.d/ (oder in welchen runlevel du halt startest) und poste die ausgabe hier vielleicht bestätigt sich meine vermutung ja :-)
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon airflow » So 20 Jun, 2004 17:07

lordpeng hat geschrieben:funktionierts denn wenn du das script händisch aufrufst nachdem der rechner mit dem boot fertig ist?


Ja, das tut es! Nur verstehen tu' ich das nicht, und ich hätte das echt gerne automatisiert... :/

lordpeng hat geschrieben:ich hab da so eine vermutung, mach mal ls /etc/rc2.d/ (oder in welchen runlevel du halt startest) und poste die ausgabe hier vielleicht bestätigt sich meine vermutung ja :-)


Ich fürchte nicht... Wie Du siehst, habe ich das ADSL Skript eh' schon sehr weit hinten plaziert, aber es haut so dennoch nicht hin... Die NICs *müssen* zu dem Zeitpunkt schon up sein, sonst könnte ich mich ja - während das Booten wegem dem ADSL-Startskript hängt - wohl kaum per SSH auf den Rechner connecten und mit dem Kommando killall pptp && killall pppd den Rechner wieder zur Mitarbeit motivieren (= er bootet dann fertig).

Bin nach wie vor für jeglichen Input dankbar, die derzeitige Lösung is ned amal a workaround... :(

mfg
airflow

Code: Alles auswählen
chello213047014143:~# ls /etc/rc2.d/ -lsh
total 0
   0 lrwxrwxrwx    1 root     root           18 Oct 27  2003 S10sysklogd -> ../init.d/sysklogd
   0 lrwxrwxrwx    1 root     root           15 Oct 27  2003 S11klogd -> ../init.d/klogd
   0 lrwxrwxrwx    1 root     root           13 Oct 27  2003 S14ppp -> ../init.d/ppp
   0 lrwxrwxrwx    1 root     root           23 Oct 29  2003 S15firewall -> /etc/init.d/firewall.sh
   0 lrwxrwxrwx    1 root     root           14 Nov 20  2003 S20alsa -> ../init.d/alsa
   0 lrwxrwxrwx    1 root     root           16 Nov  3  2003 S20apache -> ../init.d/apache
   0 lrwxrwxrwx    1 root     root           14 Apr 10 01:42 S20dhcp -> ../init.d/dhcp
   0 lrwxrwxrwx    1 root     root           14 Oct 27  2003 S20exim -> ../init.d/exim
   0 lrwxrwxrwx    1 root     root           15 Oct 27  2003 S20inetd -> ../init.d/inetd
   0 lrwxrwxrwx    1 root     root           13 Oct 27  2003 S20lpd -> ../init.d/lpd
   0 lrwxrwxrwx    1 root     root           17 Oct 27  2003 S20makedev -> ../init.d/makedev
   0 lrwxrwxrwx    1 root     root           13 Dec  4  2003 S20mpd -> ../init.d/mpd
   0 lrwxrwxrwx    1 root     root           15 Nov  5  2003 S20mysql -> ../init.d/mysql
   0 lrwxrwxrwx    1 root     root           27 Oct 27  2003 S20nfs-kernel-server -> ../init.d/nfs-kernel-server
   0 lrwxrwxrwx    1 root     root           15 Oct 29  2003 S20samba -> ../init.d/samba
   0 lrwxrwxrwx    1 root     root           13 Oct 27  2003 S20ssh -> ../init.d/ssh
   0 lrwxrwxrwx    1 root     root           16 Nov  5  2003 S20webmin -> ../init.d/webmin
   0 lrwxrwxrwx    1 root     root           20 Oct 31  2003 S21nfs-common -> ../init.d/nfs-common
   0 lrwxrwxrwx    1 root     root           13 Dec 10  2003 S23ntp -> ../init.d/ntp
   0 lrwxrwxrwx    1 root     root           17 Jun 19 18:01 S50adsl -> ../init.d/adsl.sh
   0 lrwxrwxrwx    1 root     root           13 Oct 27  2003 S89atd -> ../init.d/atd
   0 lrwxrwxrwx    1 root     root           14 Oct 27  2003 S89cron -> ../init.d/cron
   0 lrwxrwxrwx    1 root     root           19 Oct 27  2003 S99rmnologin -> ../init.d/rmnologin
chello213047014143:~#
airflow
Neu im Board
Neu im Board
 
Beiträge: 6
Registriert: Fr 18 Jun, 2004 12:35

Beitragvon lordpeng » So 20 Jun, 2004 18:06

stimmt, dein adsl wird relativ spät gestartet, nur was ich in der liste nicht sehe, wann wird das netzwerk gestartet?

wie sieht dein script denn aus?

verwendet es fĂĽr die befehle relative oder absolute pfade
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon airflow » So 20 Jun, 2004 18:22

lordpeng hat geschrieben:stimmt, dein adsl wird relativ spät gestartet, nur was ich in der liste nicht sehe, wann wird das netzwerk gestartet?

wie sieht dein script denn aus?

verwendet es fĂĽr die befehle relative oder absolute pfade


Gute Frage (wann das Netzwerk gestartet wird), ist mir auch nicht so ganz klar - networking ist nur in diesen runlevels verlinkt: /etc/rc0.d/S35networking
/etc/rc6.d/S35networking
/etc/rcS.d/S40networking, gestartet wird es aber trotzdem immer...

Ich hab mittlerweile zwei Skripts zum Starten von ADSL - eines selbst geschrieben, das andere aus dem Internet. Beide funktionieren einwandfrei - wenn ich sie selbst aus der bash aufrufe.

Meines:
Code: Alles auswählen
#! /bin/sh

# /etc/init.d/adsl.sh   Baut ADSL-Verbindung auf

# Configurable options:

case "$1" in
  start)
        echo "ADSL-Verbindung (AonSpeed) wird aufgebaut."
        pptp adsl-modem
        ;;
  stop)
        echo "ADSL-Verbindung wird abgebaut."
        killall pppd
        killall pptp
        ;;
  *)
        echo "Usage: /etc/init.d/adsl {start|stop}"
        exit 1

exit 0
esac


Das aus dem Internet:

Code: Alles auswählen
#!/bin/sh

# (C) 2003 by triendl.kj
# dieses skript dient zur herstellung einer adsl-verbindung in Ă–sterreich;
# Voraussetzugn ist, daß sie grundsätzlich eine erfolgreiche verbindung
# herstellen können.
# genauere Informationen dazu finden sie im österreichischen adsl-howto
# http://howto.htlw16.ac.at/at-highspeed-howto.html


PATH=/bin:/usr/bin:/sbin/:usr/sbin
DAEMON=/usr/sbin/pptp
PPPD=/usr/sbin/pppd
# verwenden sie fĂĽr die pid-datei den namen des Interface ĂĽber das die
# adsl-verbindung läuft;
# wenn das interface z.b. ppp1 ist, dann ist das /var/run/ppp1.pid
PIDFILE=/var/run/ppp0.pid

MODEM="10.0.0.138"              # ip-adresse des adsl-modems, standard: 10.0.0.138
OPTS="persist maxfail 0"        # automatische wiedereinwahl ohne ende

ARGS="$MODEM $OPTS"


test -x $DAEMON || exit 0
test -x $PPPD || exit 0


case "$1" in
    start)
        echo -n "Starting adsl"
                if start-stop-daemon --quiet --stop --signal 0 --pidfile $PIDFILE --name pppd; then

                        echo ": already running."
                        exit 0
                fi
                if start-stop-daemon --start --quiet --exec $DAEMON -- $ARGS; then
                        echo "."
                else
                        echo ": not started"
                fi
    ;;

    stop)
                echo -n "Stopping adsl"
                if start-stop-daemon --quiet --stop --signal 0 --pidfile $PIDFILE --name pppd; then
                        # nach spätestens drei sekunden aufgeben
                        if start-stop-daemon --stop --retry 3 --quiet --pidfile $PIDFILE --exec $PPPD --name pppd; then
                                sleep 3
                                echo "."
                        else
                                echo ": not stopped."
                                exit 1
                        fi
                else
                        echo ": not running.";
                fi
    ;;

    reload)
                #SIGHUP senden, siehe pppd-manual
        if [ ! -z "`echo persist | grep -i persist`" ]; then
                echo -n "trying to reestablish adsl-connection: "
                        # wenn nach spätestens 7 sekunden pppd nicht beendet ist,
                        # dann war wiedereinwahl erfolgreich
                        if ! start-stop-daemon --quiet --stop --retry -1/7 --exec $PPPD --name pppd; then
                                echo "connection reestablished."
                        else
                                echo "connection terminated."
                        fi
                else
                        echo "reestablishing adsl-connection is only possible if $PPPD was started with the "persist"-option."
                fi
    ;;

    force-reload|restart)
                $0 stop && $0 start
    ;;

    *)
        echo "usage: adsl start|stop|restart|reload|force-reload"
        exit 1
    ;;
esac

exit 0
chello213047014143:~#


ciao,
airflow
airflow
Neu im Board
Neu im Board
 
Beiträge: 6
Registriert: Fr 18 Jun, 2004 12:35

Beitragvon lordpeng » So 20 Jun, 2004 18:35

fĂĽg mal folgende zeile in dein script ein:

ping -c 10 10.0.0.138 > /tmp/debug.out

wenn zum zeitpunkt wo das script gestartet wird eine netzwerkverbindung bis zum modem besteht dann solltest du 10 replys in der datei /tmp/debug.txt drinnen haben, wenn das nicht so ist weisst du wenigstens dass das problem an einer nicht bestehenden oder blockierten netzwerkverbindung besteht ...

btw. die scripts sehen bei schnellem ĂĽberfliegen eigentlich verwendbar aus
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon airflow » So 20 Jun, 2004 20:07

lordpeng hat geschrieben:fĂĽg mal folgende zeile in dein script ein:

ping -c 10 10.0.0.138 > /tmp/debug.out

wenn zum zeitpunkt wo das script gestartet wird eine netzwerkverbindung bis zum modem besteht dann solltest du 10 replys in der datei /tmp/debug.txt drinnen haben, wenn das nicht so ist weisst du wenigstens dass das problem an einer nicht bestehenden oder blockierten netzwerkverbindung besteht ...

btw. die scripts sehen bei schnellem ĂĽberfliegen eigentlich verwendbar aus


Thx for your support - OK, gute Idee, aber jetzt bin ich noch ratloser. Hab das mal eben getestet, und das Verhalten war folgendes:

Beim ersten Mal neu hochfahren hat es funktioniert, d.h. ADSL ist tatsächlich gestartet und in der Debug Datei war auch der dazugehörige Output. Aber nachdem ich ja eigentlich nichts relevantes geändert habe, habe ich einfach nach dem Hochfahren mit Str+Alt+Ent den Rechner ein weiteres Mal neu booten lassen. Und siehe da, beim zweiten Mal funktionierte es wieder nicht - ADSL bleibt stecken, aber der ping, den ich am Anfang des Skripts ablaufen lasse, funktioniert...

Code: Alles auswählen
chello213047014143:~# cat /tmp/debug.out
PING 10.0.0.138 (10.0.0.138): 56 data bytes
64 bytes from 10.0.0.138: icmp_seq=0 ttl=64 time=4.0 ms
64 bytes from 10.0.0.138: icmp_seq=1 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=2 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=3 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=4 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=5 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=6 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=7 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=8 ttl=64 time=0.3 ms
64 bytes from 10.0.0.138: icmp_seq=9 ttl=64 time=0.3 ms

--- 10.0.0.138 ping statistics ---
10 packets transmitted, 10 packets received, 0% packet loss
round-trip min/avg/max = 0.3/0.6/4.0 ms


So, und jetzt hab's ich noch mit dem anderen Skript mal probiert (auch mit ping) - und bei dem hat sich's gleich auf Anhieb aufgehängt. Ping hat funktioniert. Also irgendwas hat's da - und es hat meines Erachtens nicht mit einer nicht bestehenden Netzwerkverbindung zu tun. Bin nach wie vor über jegliche Art von Input dankbar.

lg
airflow
airflow
Neu im Board
Neu im Board
 
Beiträge: 6
Registriert: Fr 18 Jun, 2004 12:35

Beitragvon lordpeng » So 20 Jun, 2004 20:54

weils mir grad so einfällt, bastel in dein script noch eine funktion rein welche das PID file löscht, in etwa sowas:

[ -e /var/run/pptp/10.0.0.138 ] && rm -rf /var/run/pptp/10.0.0.138
das sollte vor dem start der dsl verbindung geschehen

ein normales rm {.....} wĂĽrds aber auch tun

vielleicht hilfts ...

btw. was issn das fĂĽr eine distribution?

für redhat basierende distributionen hätt ich mal ein script geschrieben, das bislang immer recht gut funktioniert hatte
lordpeng
Moderator
Moderator
 
Beiträge: 10198
Registriert: Mo 23 Jun, 2003 22:45


ZurĂĽck zu LINUX & UNIX-DERIVATE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste