Problem mit Tunnelbreak

      Problem mit Tunnelbreak

      Hey Leute!
      Nachdem ich den Speedport jetzt fertig umgebaut bei mir angeschlossen habe, müssen nur noch ein Paar Feinjustierungen getätigt werden. Zu aller erst schreib ich euch mal das Script rein, welches die Trennung von DSL und LTE durchführt. Alles geht also über LTE only, was nicht über Ausnahmen auf DSL only festgelegt ist.

      /opt/bin/dsl-tunnel.sh down | clear startet und beendet den Tunnelbreak
      dieses Script startet das nachfolgende Script /opt/bin/killtunnel

      Dieses Script sieht ausgeführt so aus:

      /bin/sh

      while :
      do
      ip addr del $(ip addr list dev ppp256 scope global dynamic | grep inet6 | cut -d ' ' -f 6) dev ppp256 2> /dev/null
      sleep 1
      done &

      Mein Problem ist jetzt, dass sich der Tunnel wiederherstellt, so nach ca. 10 Minuten. Muss also ein Fehler vorliegen. Tunnelbreak sollte erhalten bleiben, dass ich das ganze auch ausführlich testen kann.
      Bin mir sicher, dass mir da jemand schnell weiterhelfen kann ;) @eMKay77

      Grüße
      MXPrime

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MXPrime“ ()

      Moin!

      Tja, eigentlich läuft das Script ja schon in einer Schleife - eben weil sonst der Tunnel nach dem Timeout wieder hergestellt wird...
      ...allerdings ist das, was Du oben gepostet hast, streng genommen gar kein Script, weil das 'shebang' nicht stimmt ;)

      Die erste Zeile müsste

      Shell-Script

      1. #!/bin/sh
      sein.

      Viel mehr kann ich von hier aus dazu eigentlich nicht sagen - ich kenne die anderen Scripts ja nicht.
      (nur 'killtunnel' ist von mir - aber in Deinem Post eben mit Fehler versehen)

      mfg, emkay
      Naja, wenn's eigentlich funktioniert, muß auch die Schleife funktionieren... ;)
      Der Befehl zum Löschen des Tunnels ist ja innerhalb der while-Schleife :D

      Aber das killtunnel-Script darf natürlich nicht beendet werden, sonst endet logischerweise auch die Schleife.
      Eventuell wird bei Dir ungewollt das Script beendet... dann wird der Tunnel nach einer Weile wieder hergestellt.

      Also:
      -- Script 'killtunnel' läuft --> 1x pro Sekunde wird das Tunnelinterface, wenn vorhanden, entfernt
      -- Script wird beendet --> Tunnel(-Interface) wird nach Timeout neu erzeugt

      Ich glaub' da lag auch der Sinn in Daniels Script, es startet bzw. beendet 'killtunnel'.
      Bei Dir wird aber scheinbar killtunnel im falschen Moment beendet.

      mfg, emkay
      Tja - die Frage kannst eigentlich nur Du selbst beantworten ;)
      Das Script beendet sich niemals selbst - muß also von irgendwem / irgendetwas auf Deinem Router gekillt werden.

      Mit

      Quellcode

      1. ps aux | grep killtunnel
      solltest Du sehen können, ob das Script läuft (wenn ja, zeigt es dessen Process-Infos an, wenn nein zeigt es nix).
      Und mal ganz dumm: auch mal die Datei-Attribute der Scripts überprüfen - manchmal sind's die gaaanz kleinen Sachen :D

      mfg, emkay

      eMKay77 schrieb:

      Moin!

      Tja, eigentlich läuft das Script ja schon in einer Schleife - eben weil sonst der Tunnel nach dem Timeout wieder hergestellt wird...
      ...allerdings ist das, was Du oben gepostet hast, streng genommen gar kein Script, weil das 'shebang' nicht stimmt ;)

      Die erste Zeile müsste

      Shell-Script

      1. #!/bin/sh
      sein.

      Viel mehr kann ich von hier aus dazu eigentlich nicht sagen - ich kenne die anderen Scripts ja nicht.
      (nur 'killtunnel' ist von mir - aber in Deinem Post eben mit Fehler versehen)
      mfg, emkay


      war alles richtig, hatte das script nur unvollstandig kopiert. der Fehler muss woanders liegen. ich hab aber keinen Plan wo
      @eMKay77 ...ich hatte ein Start-Stop Script dsl-tunnel.sh gebaut. diese startet und beendet das Script killtunnel.

      In das killtunnel habe ich die while-Schleife mitden entsprechenden Befehl aus dem Thread reingepackt. Irgendwie hatte er wegen dem Schleifeninneren gemuckert, als ich es daheim nachgestellt habe (bis auf das löschen) ging es kommischerweise. Ich habe grad keine Idee, was jetzt noch im Argen sein könnte.

      Grüße

      danXde
      Joa... dann gibt's entweder 'ne Abweichung zu meinem killtunnel-Script, oder es könnt' sich natürlich auch was mit den neueren FW-Versionen verändert haben...
      (Name des Interfaces zB.)

      Eventuell hilft es bei sowas ja, mal die Fehlermeldungen zu lesen.... ;)
      (die Erwähnung, daß da was 'muckte' allein, hat ja wenig Aussagekraft und hilft kaum :D )

      Ich selbst kann da im Moment nur die für euch wohl kaum hilfreiche Aussage treffen, daß mein Script ohne zusätzliches 'Geschnörkel' problemlos lief - für Änderungen / Abweichungen / Erweiterungen kann ich kaum 'ne Aussage treffen -- schon gar nicht ohne irgendwelche Debug-Infos :D

      mfg, emkay
      Das Script wird ausgeführt und der Tunnelbreak funktioniert. Screens dazu im Anhang.
      Wird Putty geschlossen ist der Tunnel nach gut einer Minute wieder da. ?(
      Hoffe euch bringt das weiter
      Bilder
      • break.PNG

        4,85 kB, 533×69, 7.560 mal angesehen
      • ipconfig ppp256.PNG

        13,61 kB, 820×161, 7.566 mal angesehen
      • tunnel_down.PNG

        4,38 kB, 688×144, 7.562 mal angesehen
      • tunnel_up.PNG

        4,14 kB, 670×128, 7.626 mal angesehen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MXPrime“ ()

      Moin!

      Jupp.... da liegt das Problem ;)
      Wenn man das Script manuell startet, wird es mit der Shell verbunden - endet die Shell, endet auch das Script...
      -- ich glaub' das hatten wir damals sogar mal erwähnt, daß die Shell da offen bleiben sollte --
      (das Problem taucht sonst nicht so oft auf, weil die meisten die Scripts nicht manuell, sondern über ein Web-Interface starten)

      Hauptproblem ist also, daß die Shell beim trennen von Telnet ein SIGHUP-Signal bekommt, welches sie an ihre Jobs/Programme/Scripts weiterleitet.

      @danXde hatte ja 'nohup' schon erwähnt... sonst gibt's bei manchen Shells noch

      Quellcode

      1. /opt/bin/killtunnel &!
      aber ich bin mir beim SPH nicht sicher ob er das mit dem '!' kennt.

      Oder vielleicht

      Quellcode

      1. /opt/bin/killtunnel &
      2. disown
      könnte gehen.

      Oder eben alles 'disownen' bevor man die Shell schließt --> bevor Du die Session beendest ein

      Quellcode

      1. disown -a


      Oder, wenn das Alles nix hilft, der Totschlag-Weg --> man könnte auch 'start-stop-daemon' vom busybox-mips nutzen :D

      mfg, emkay
      Ich war da jetzt mal echt neugierig, weil es ja sowas wie'n Standard-Problem ist, daß man mit Telnet / SSH durchaus öfter mal bekommt...

      Der saubere Weg, sowas ohne zusätzliche Tools zu machen, scheint wohl folgendes zu sein:

      Quellcode

      1. (( killtunnel &) &)
      --> also doppeltes 'Sub-Shelling' im Hintergrund, was dazu führt, daß das Script dem Init-Prozeß unterstellt wird, statt der aktuellen Shell.
      Da dann 'Init' der Parent-Prozeß vom Script ist, ist dieses dann auch kein 'Zombie' und Init räumt hinter ihm auf.

      mfg, emkay